我从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';
}
答案 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);