我试图理解这个简单的代码,如果有人可以向初学者解释这一部分代码。请在简单的代码上忍受我并试图理解这一点。
我了解循环在做什么,只是 !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]
您正在以$ value(1、2、3、4、5 ...)作为$ value数组的$键
3)当我var_dump $ value [$ values]内部的内部foreach循环中时,我得到 Notice: Undefined index:
,为什么要得到这个?索引应该是数字吗?
4)最后,为什么不设置$value[$values]
未设置?
运行此代码时,$ value为空,因此您测试的所有值都不设置,此数组中没有键1、2、3、4、5 ...因此,这就是为什么您有未定义的索引错误...
$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
,因此代码将执行。