2013-11-14 46 views
0

我得到的一組數據從一個MySQL數據庫:in_array()PHP返回false全面,總是

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

你有一個數組數組。你正在尋找一個字符串。基本上,你做錯了。你需要爲你的字符串檢查每個子數組,而不是包裝它們。 –

回答

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'; 
    } 
} 
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'; 
    } 
0

如果你不處理時間的表演我總能找到更加清晰與拉姆達使用array_map比如果/否則

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