所以我从我的办公室里遇到了这些PHP 8代码(简化):
[, $x] = $y;
字符串我也看到了另一种方式
[$x, ] = $y;
型这些会做什么?如果我在沙盒中这样做,并事先给$y分配随机值,我不会得到$x的任何东西。我知道它不是坏代码,因为PHPStorm验证了它。我试过搜索它,但包括Stackoverflow在内的所有搜索引擎都会忽略逗号或[],所以我找不到答案。
vcirk6k61#
这是解构赋值。左边数组中的变量是从右边数组中相应的元素赋值的。它等价于旧的list() assignment。你可以使用逗号在前后不带变量来表示赋值时跳过的数组元素。因此:
list()
字符串相当于
$x = $y[1];
型和
型相当于
$x = $y[0];
型你通常不会使用这种语法来分配单个变量,它主要用于分配多个变量:
[$a, $b, , $c] = $y;
型这是一条捷径,
$a = $y[0]; $b = $y[1]; $c = $y[3];
型列表末尾不需要逗号,但您可以将它们包括在内,其原因与在数组字面量中包括逗号的原因相同:它使添加其他元素更容易(特别是当您每行写入一个元素时)。
egdjgwm82#
$array = [10, 20, 30]; [$x, ] = $array; echo $x; // Output: 10 [, $x] = $array; echo $x; // Output: 20 [2 => $x] = $array; echo $x; // Output: 30
字符串这就是所谓的数组解构。
2条答案
按热度按时间vcirk6k61#
这是解构赋值。左边数组中的变量是从右边数组中相应的元素赋值的。它等价于旧的
list()
assignment。你可以使用逗号在前后不带变量来表示赋值时跳过的数组元素。因此:
字符串
相当于
型
和
型
相当于
型
你通常不会使用这种语法来分配单个变量,它主要用于分配多个变量:
型
这是一条捷径,
型
列表末尾不需要逗号,但您可以将它们包括在内,其原因与在数组字面量中包括逗号的原因相同:它使添加其他元素更容易(特别是当您每行写入一个元素时)。
egdjgwm82#
字符串
这就是所谓的数组解构。