0

我从 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';
    }
4

3 回答 3

3

这是因为您的数组是多维数组,并且您的所有元素都是数组。试试这个自定义函数(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';
    }
于 2013-11-14T13:17:51.680 回答
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';
    }
}
于 2013-11-14T13:19:49.970 回答
0

如果您不处理时间表现,我总是发现将 array_map 与 lambda 一起使用比 if/else 更清楚

array_map(function($a)
{
    echo in_array('1', $a) ? 'true' : 'false';
}, $query);
于 2013-11-14T14:17:20.763 回答