in_array()php总是返回false

时间:2013-11-14 13:13:06

标签: php arrays

我从MySql数据库中获取了一组数据:

Array ( 
    [0] => Array ( [upload_status] => 0 ) 
    [1] => Array ( [upload_status] => 0 ) 
    [2] => Array ( [upload_status] => 0 )
    [3] => Array ( [upload_status] => 0 )
    [4] => Array ( [upload_status] => 0 )
    [5] => Array ( [upload_status] => 0 )
    [6] => Array ( [upload_status] => 0 )
    [7] => Array ( [upload_status] => 1 )
    [8] => Array ( [upload_status] => 0 ) 
    [9] => Array ( [upload_status] => 0 ) 
    [10] => Array ( [upload_status] => 0 ) 
    [11] => Array ( [upload_status] => 1 ) 
    [12] => Array ( [upload_status] => 1 ) 
    [13] => Array ( [upload_status] => 1 ) 
) 

我想检查数组中是否存在0

我正在使用此代码,但是in_array()返回false,尽管事实上我可以在上面的数组中看到零。

$query = $this
    ->db
    ->select('upload_status')
    ->where('lab_ref_no',$labref)
    ->get('sample_issuance')
    ->result_array();

    print_r($query);

    if (in_array('1', $query)) {
        echo 'true';
    } else {
        echo'false';
    }

3 个答案:

答案 0 :(得分:3)

这是因为你的数组是一个多维数组,你的所有元素都是数组。试试this custom function(r代表递归):

function in_array_r($needle, $haystack, $strict = false) {
    foreach ($haystack as $item) {
        if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
            return true;
        }
    }
    return false;
}

并像这样使用它:

    $query= $this->db->select('upload_status')->where('lab_ref_no',$labref)->get('sample_issuance')->result_array();
    print_r($query);
    if(in_array_r('1', $query)){
        echo 'true';
    }else{
        echo'false';
    }

答案 1 :(得分:2)

in_array()搜索包含数组的值,在你的情况下你的结果有数组数组,所以你需要循环数组并将你的语法放在循环之间,如下所示:

$query= $this->db->select('upload_status')->where('lab_ref_no',$labref)->get('sample_issuance')->result_array();
    print_r($query);
    foreach($query as $arr) {
    if(in_array('1', $arr)){
        echo 'true';
    }else{
        echo'false';
    }
}

答案 2 :(得分:0)

如果你没有处理时间表演我总是发现使用lambda的array_map比if / else

更清楚
array_map(function($a)
{
    echo in_array('1', $a) ? 'true' : 'false';
}, $query);