0

我有一个 foreach 循环将数组中的值添加到 codeigniter where 函数中。当我将带有内容的值传递到此循环中时,它不会改变。但是,当一个空值进入时,它会与数组中它之前的项目的值一起出现。

这是代码:

if(is_null($data['psc_opt_5'])){ echo "null"; }else{ echo $data['psc_opt_5']; }
foreach($data as $field => $value)
{

    if(!is_null($value))
    {

        $this->db->where($field, $value);

    }
    else
    {

        $this->db->where($field." IS NULL");

    }

}

if(is_null($data['psc_opt_5'])){ echo "null"; }else{ echo $data['psc_opt_5']; }

该数组包含 psc_opt_1 - psc_opt_5。

有任何想法吗?

编辑

第一个 if 语句证明 psc_opt_5 在循环之前为空,这是我正在测试的数组:

数组([psc_opt_1] => 1 [psc_opt_2] => 2 [psc_opt_3] => 3 [psc_opt_4] => 4 [psc_opt_5] => )

数组( [psc_opt_1] => 5 [psc_opt_2] => 2 [psc_opt_3] => 3 [psc_opt_4] => 4 [psc_opt_5] => )

数组( [psc_opt_1] => 7 [psc_opt_2] => 2 [psc_opt_3] => 3 [psc_opt_4] => 4 [psc_opt_5] => )

4

2 回答 2

0

问题似乎是foreach不喜欢将null值传递给它,因此它保留了前一个循环的值。我发现如果我添加如下安培,它会通过以下方式传递空值:

foreach($data as $field => &$value)
{



}
于 2012-07-17T12:07:44.670 回答
0

这似乎是一个 NULL vs. Empty 问题。NULL 是一个非值,而 ' ' 是一个包含 0 个字符的空字符串。

编辑代码:

<?php
$data = array (
    "psc_opt_1" => '1',
    "psc_opt_2" => '2',
    "psc_opt_3" => '3',
    "psc_opt_4" => '4',
    "psc_opt_5" => '',          
);


foreach($data as $field => $value)
{

 echo 'Now processing: '.$field.' | ';

    if(!is_null($value) && !empty($value))
    {
        echo $field.' has value of: '.$value;
    }
    else
    {
        echo $field.' is empty of NULL';
    }
    echo '</br>';

}
于 2012-07-17T11:46:08.777 回答