PHP空数组定义与开始或结束逗号

xzv2uavs  于 12个月前  发布在  PHP
关注(0)|答案(2)|浏览(108)

所以我从我的办公室里遇到了这些PHP 8代码(简化):

[, $x] = $y;

字符串
我也看到了另一种方式

[$x, ] = $y;


这些会做什么?如果我在沙盒中这样做,并事先给$y分配随机值,我不会得到$x的任何东西。我知道它不是坏代码,因为PHPStorm验证了它。
我试过搜索它,但包括Stackoverflow在内的所有搜索引擎都会忽略逗号或[],所以我找不到答案。

vcirk6k6

vcirk6k61#

这是解构赋值。左边数组中的变量是从右边数组中相应的元素赋值的。它等价于旧的list() assignment
你可以使用逗号在前后不带变量来表示赋值时跳过的数组元素。因此:

[, $x] = $y;

字符串
相当于

$x = $y[1];


[$x, ] = $y;


相当于

$x = $y[0];


你通常不会使用这种语法来分配单个变量,它主要用于分配多个变量:

[$a, $b, , $c] = $y;


这是一条捷径,

$a = $y[0];
$b = $y[1];
$c = $y[3];


列表末尾不需要逗号,但您可以将它们包括在内,其原因与在数组字面量中包括逗号的原因相同:它使添加其他元素更容易(特别是当您每行写入一个元素时)。

egdjgwm8

egdjgwm82#

$array = [10, 20, 30];

[$x, ] = $array;

echo $x;  // Output: 10

[, $x] = $array;

echo $x;  // Output: 20

[2 => $x] = $array;

echo $x;  // Output: 30

字符串
这就是所谓的数组解构。

相关问题