如何在codeigniter中的三元运算符中写入多个条件?

问题描述 投票:0回答:2

我的照片:

enter image description here

在这张图片中,我使用单选按钮保存组类型。如果选择资产负债表,则保存为“B”,损益为“P”。如果没有选择任何内容,则保存为“T”。

现在我的问题是我使用三元运算符检查条件,但对我来说只有第二个条件正在工作。它不适用于该运算符中的多个条件。我如何解决我的问题。

public function GEntry()
{

        $session_data = $this->session->userdata('logged_in');
        $data['username'] = $session_data['username'];
        $this->form_validation->set_rules('gName', 'gName', 'required');

        $this->form_validation->set_error_delimiters('<div class="text-danger">',
            '</div>');
        $check1 = isset($_POST['gType']);

        $check =  ($check1 == 'B') ? "B"  : ($check1 == 'P') ? "P" :'T';
    //$check1 = isset($_POST['tin_no1']) ? "Y" : "N";

        if ($this->form_validation->run())
        {
            $data= array(
                'gName' => $this->input->post('gName'),
                'gType' => $check
                );
        //means insert a data into the table
            $this->db->insert('groups',$data);

            return redirect('Master/Groups');
        }
php codeigniter ternary-operator
2个回答
1
投票

您没有将后期数据分配给变量$check1。你正在检查像这样$check1 = isset($_POST['gType']);这将给你true / false

更新如下:

$check1 = isset($_POST['gType']) && in_array($_POST['gType'], ['B', 'P']) ? $_POST['gType'] : 'T';

然后删除此行$check = ($check1 == 'B') ? "B" : ($check1 == 'P') ? "P" :'T';


0
投票

您可以使用如下括号捕获整个三元运算符:

$a = ($b === 'A') ? 'A' : (($b === 'B') ? 'B' : (($b === 'C') ? 'C' : 'D'));

但是......如果您的决定超过2-3个条件,我不建议您使用此程序。在这种情况下,我会建议你,使用switch代替:

switch ($b)
{
    case 'A':
        $a = 'A';
        break;
    default:
        $a = 'D';
        break;
}

另外......我建议你使用===比较器代替==比较器,就像你提供的代码一样。第三个=确保两个给定值具有相同的数据类型,因此您在示例中将string与另一个string进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.