PHP 一些帮助理解这个 !isset

PHP Some help understanding this !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] 被认为未设置?

当您 运行 这段代码时,$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() returns false。然后 !isset() 将 return true,因此代码将执行。