PHP有些帮助理解这个!isset

时间:2015-05-10 06:31:58

标签: php arrays key isset

我试图理解这个简单的代码,如果有人可以向初学者解释这一段代码。请关注简单的代码并尝试理解这一点。

我理解循环正在做什么,它只是导致我瘫痪的!isset($value[$values])部分。

有人可以向我解释!isset发生了什么,以及为什么没有设置?

实施例

$array1 = [1, 2, 3];

$array2 = [4, 5, 6];

$array3 = [7, 8, 9];

$value = [];

foreach ([$array1, $array2, $array3] as $arr) {
    foreach ($arr as $values) {

        if (!isset($value[$values])) { // Why is this part of the code not set?
         ...
        }

    }
}

从我的理解是:

1)$value[]值是一个空数组

2)$value[$values]你传入$ values(1,2,3,4,5 ......)作为$ value数组的$ key

3)当我在内部foreach循环中var_dump $ value [$ values]时,我得到Notice: Undefined index:为什么我得到这个?索引应该是数字吗?

4)最后,为什么$value[$values]被认为没有设定?

2 个答案:

答案 0 :(得分:2)

运行此代码时,$ value为空,因此您测试的所有值都未设置,此数组中没有键1,2,3,4,5 ... 所以这就是你得到未定义索引错误的原因......

答案 1 :(得分:1)

$value是一个空数组。因此,在为该键指定值之前,不会设置在该数组中调用的任何键。

$value[$values]正在传递[ 1, 2, 3 ][ 4, 5, 6 ][ 7, 8, 9 ],因此您正在呼叫$value[1]$value[2]等。

您收到undefined index因为索引未定义。 PHP处理得很好并发出Notice。其他语言(例如Java)将发出Null Pointer Exception

最后,因为$value是一个空数组,并且未设置该键,isset()会返回false。然后!isset()将返回true,因此代码将执行。