我试图理解这个简单的代码,如果有人可以向初学者解释这一段代码。请关注简单的代码并尝试理解这一点。
我理解循环正在做什么,它只是导致我瘫痪的!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]
被认为没有设定?
答案 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
,因此代码将执行。