【问题标题】:How to write more than one condition in ternary operator in codeigniter?如何在codeigniter的三元运算符中编写多个条件?
【发布时间】:2019-08-04 23:32:28
【问题描述】:

我的图片:

在这张图片中,我正在使用单选按钮保存组类型。如果选择资产负债表,则保存为“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');
        }

【问题讨论】:

  • 嵌套多个三元运算符是一种很大的代码味道。它很快变得不可读,并且很难维护。我建议改为分多个步骤进行。您应该始终尝试编写尽可能可读的代码。
  • 这个问题和 Codeigniter 有什么关系? $check = in_array($check1, ['B', 'P']) ? $check1 : 'T'

标签: php codeigniter ternary-operator


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    如下更新:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-01
      • 2012-02-27
      • 2012-09-14
      • 2011-06-26
      • 2013-01-14
      • 2013-06-06
      • 2013-10-30
      • 2019-11-06
      相关资源
      最近更新 更多