php 数组 returns 未定义但 print_r 显示为其他

php array returns undefined but print_r shows otherwise

foreach($jsonmediationinfo as $value1) {
    echo $value1['mstatus'];
    print_r($jsonmediationinfo);
}

输出:

1Array ( [0] => Array ( [mstatus] => 1 [mhearingnum] => first [mminutes] => adakjaflafjlarjkelfkalfkd;la ) [1] => Array ( [mhearingnum] => second [mminutes] => ) [2] => Array ( [mhearingnum] => third [mminutes] => ) ) 

Undefined index: mstatus in ... on line 265 第 265 行是 echo $value1['mstatus'];

这是我的 php 服务器端 code.This 用于将数据保存到数据库中,但我在第 265 行中未定义 index:mstatus。但是在 print_r 索引中mstatus 显然存在。此外,如果我在更新数据时签入数据库,则值会更改为正确的值。在此示例中,值更改为 1.

这行代码有什么问题。任何建议表示赞赏

您要循环的数组如下所示:

Array (
    [0] => Array (
        [mstatus] => 1
        [mhearingnum] => first
        [mminutes] => adakjaflafjlarjkelfkalfkd;la
    )
    [1] => Array (
        [mhearingnum] => second
        [mminutes] =>
    )
    [2] => Array (
        [mhearingnum] => third
        [mminutes] =>
    )
)

只有第一个索引处的子数组包含mstatus,因此在循环的第二次迭代时抛出异常。最好使用 isset($value1['mstatus']).

检查是否存在 mstatus
foreach ($jsonmediationinfo as $value1) {
    if (isset($value1['mstatus'])) {
        echo $value1['mstatus'];
        print_r($jsonmediationinfo);
    }
}

在现实生活中,您可以这样处理您的状态:

foreach ($jsonmediationinfo as $value1) {
    if (isset($value1['mstatus']) && ($value1['mstatus'] === 1 || $value1['mstatus'] === true)) {
        // Do something with the positive status
    } else {
        // Do something with the negative/missing status
    }
}

正如 RuubW 提到的那样

你也可以像这样处理现实生活中的情况

    foreach ($jsonmediationinfo as $value1) {
        if (array_key_exists('mstatus',$value1)) {
            echo $value1['mstatus'];
        } 
        print_r($jsonmediationinfo);
    }