null值的问题

时间:2012-07-17 11:23:57

标签: php arrays codeigniter foreach null

我有一个foreach循环,用于将数组中的值添加到codeigniter中的函数中。当我将带有内容的值传递给此循环时,它不会改变。但是,当一个空值进入时,它会在数组中显示它之前的项的值。

以下是代码:

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] =>五       [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] =>   )

2 个答案:

答案 0 :(得分:0)

这似乎是一个NULL与空问题。 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>';

}

答案 1 :(得分:0)

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

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



}