如果在codeigniter中声明

时间:2015-01-15 05:01:27

标签: php codeigniter

我在控制器中有这样的代码:

            $date =  $this->input->post('date');
            $shift =  $this->input->post('shift');
            $exca_id =  $this->input->post('exca_id');
            $status =  $this->input->post('id_status');

            if ($status !== 4 ) {
               $fleet = date('ymd',strtotime(str_replace('-', '/', $date))).$shift.$status;
            }
            else
            {
                $fleet = date('ymd',strtotime(str_replace('-', '/', $date))).$shift.$exca_id;
            }

            $data = array(
                    'date' => $date,
                    'shift' => $shift,
                    'exca_id' => $exca_id,
                    'fleet_status' => $fleet,
                    'id_status' => $status,
                );

如果语句不正确,当我输入id_status == 4将运行上面的代码但是没有运行。

换句话说,在上面的代码中,当我输入id_status == 4

$fleet = date('ymd',strtotime(str_replace('-', '/',$date))).$shift.$status;
当我输入id_status时,

应该运行== 4将运行

$fleet = date('ymd',strtotime(str_replace('-', '/', $date))).$shift.$exca_id;
你可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

Replace this code 

if ($status != 4 ) {
               $fleet = date('ymd',strtotime(str_replace('-', '/', $date))).$shift.$status;
            }
            else
            {
                $fleet = date('ymd',strtotime(str_replace('-', '/', $date))).$shift.$exca_id;
            }

答案 1 :(得分:0)

==(松散相等)的反面是!=

===(严格相等)的反面是!==

您可能正在将字符串'4'与数字4进行比较。这两个值松散相等但严格相等,所以你想要!=而不是!==

另一种解决方法是将$status严格地与字符串'4'进行比较,因为输入肯定会返回一个字符串。

例如

$status !== '4'

或者,将输入转换为整数可能是最佳解决方案,因为它会向团队中的其他人显示您的状态为数字的意图。

(int)$status !== 4