【发布时间】:2015-05-10 22:37:52
【问题描述】:
如果有人可以向初学者解释这一段代码,我正在尝试理解这个简单的代码。请耐心等待我的简单代码并尝试理解这一点。
我了解循环在做什么,只是 !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] 被认为未设置?
【问题讨论】:
-
它没有设置,因为它没有设置。尝试手动单步执行循环。仔细想一想就明白了。
-
是不是因为你用数字键
[$values]分配$value数组,没有值? -
没有。您没有为
$value或其元素分配任何内容。也许你会感到困惑,因为$value是一个数组而$values是一个标量,所以两者都被错误命名了。您收到的两个答案都是正确的。你认为isset是做什么的? -
我想我明白了,$value 是空数组,你是说如果 $value 数组的键为 $values 没有设置那么......这是因为你没有还没分配吗?
-
是的。这就是未定义的索引,所以这就是您收到通知的原因。