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 に答える