我可以print_r数组值,但不能在if语句中检查它

时间:2017-09-18 11:41:53

标签: php arrays

我正在研究一个PHP函数并得到这个错误,我不明白......

print_r($my_array);将输出

Array ( 
    [0] => Array ( 
        [field_id_41] => 
    ) 
)

但如果我尝试

if ($my_array[0]['field_id_41'] == "some value")

我收到错误

  

未定义的偏移量:0

我已经尝试$my_array['0'],但这并没有什么不同。我可以将值分配给另一个变量,并打印出来,但出于某种原因,将它用于if语句会打破它。

我真的不确定这里发生了什么......感谢任何帮助。

编辑:这是我遇到问题的实际循环

foreach($counsellors_result as $one_counsellor) {
    $this_time_out_query = ee()->db->select('field_id_41')
        ->from('channel_data')
        ->where('entry_id', $one_counsellor['parent_id'])
        ->get();

    $this_time_out = $this_time_out_query->result_array();
    $time_out_status = $this_time_out['0']['field_id_41'];

    if ($time_out_status != "Time Out") {
        ee()->db->insert(
            'relationships',
            array(
                'parent_id' => $entry_id,
                'child_id' => $one_counsellor['parent_id'],
                'field_id' => 111
            )
        );
    }
}

2 个答案:

答案 0 :(得分:0)

尝试这种方式帮助完整

<?php

$this_time_out=array (0 => array ( 'field_id_41' =>""));

$time_out_status = $this_time_out[0]['field_id_41'];
if($time_out_status != ""){
    echo $time_out_status;  
}else{
    echo "no any value<br><br>";
}

//print "no any value"

$this_time_out=array (0 => array ( 'field_id_41' =>"test"));

$time_out_status = $this_time_out[0]['field_id_41'];
if($time_out_status != ""){
    echo $time_out_status;  
}else{
    echo "no any value";
}

//print "test"

答案 1 :(得分:0)

你在每次循环迭代中都有var_dump吗?我猜你在第一次迭代中得到数组(array('field_id_41'=&gt;''))但在第二次迭代中为null。当你查看输出时,你看不到var_dump(null)。

请尝试以这种方式转储:

$i = 0;
foreach (...) {
   //...
   var_dump(array('i' => $i, 'var' => $time_out_status));
   $i++;
   //...
}

你可能会在第二次迭代中看到:

array('i' => 1, 'var' => null)