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

How to write more than one condition in ternary operator in codeigniter?

我的照片:

在这张照片中,我正在使用无线电 button.if 保存组类型 sheet 是 selected 它保存为 "B" 并且盈亏为 "P".如果没有select任何东西,它保存为"T".

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

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

您没有将 post 数据分配给变量 $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';

您可以像这样使用括号捕获整个三元运算符:

$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 进行比较。