PHP 空数组定义,以逗号开头或结尾

Car*_*s2W 3 php arrays definition

所以我在我的办公室的 PHP8 代码上遇到了这些(简化的):

[, $x] = $y;
Run Code Online (Sandbox Code Playgroud)

我也看到了另一种方式

[$x, ] = $y;
Run Code Online (Sandbox Code Playgroud)

这些会做什么呢?如果我在沙箱中执行此操作并事先为 $y 分配随机值,则 $x 不会得到任何结果。我知道这不是坏代码,因为 PHPStorm 验证了它。

我尝试过搜索它,但是包括 Stackoverflow 在内的每个搜索引擎都会忽略逗号或 [],所以我无法得到答案。

Bar*_*mar 5

这是解构赋值。左侧数组中的变量是从右侧数组的相应元素分配的。它相当于旧的list()作业

您可以使用前后不带变量的逗号来指示分配时跳过的数组元素。因此:

[, $x] = $y;
Run Code Online (Sandbox Code Playgroud)

相当于

$x = $y[1];
Run Code Online (Sandbox Code Playgroud)

[$x, ] = $y;
Run Code Online (Sandbox Code Playgroud)

相当于

$x = $y[0];
Run Code Online (Sandbox Code Playgroud)

您通常不会使用此语法来分配单个变量,它对于分配多个变量最有用:

[$a, $b, , $c] = $y;
Run Code Online (Sandbox Code Playgroud)

这是一个快捷方式

$a = $y[0];
$b = $y[1];
$c = $y[3];
Run Code Online (Sandbox Code Playgroud)

列表末尾不需要逗号,但您可能会出于与在数组文字中包含逗号相同的原因而包含它们:它使添加其他元素变得更容易(特别是当您每行写入一个元素时) 。