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

时间:2019-03-14 06:35:02

标签: php codeigniter ternary-operator

我的图片:

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');
        }

2 个答案:

答案 0 :(得分: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';

答案 1 :(得分: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;
}

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