同时初始化多个PHP变量

dre*_*999 47 php

如何在不使用数组的情况下同时初始化多个值为零的PHP变量?我希望编写的代码基本上等同于以下内容:

$first = 0;
$second = 0;
$third = 0;
$fourth = 0;
Run Code Online (Sandbox Code Playgroud)

rid*_*rid 95

$first = $second = $third = $fourth = 0;
Run Code Online (Sandbox Code Playgroud)

  • 这种多重赋值的工作原理是,在PHP中,赋值是一个返回指定值的表达式.因此,`$ fourth = 0`是一个返回值"0"的表达式.然后将该值赋给`$ third`,并且,由于此赋值也是表达式,因此将"0"赋值给"$ third"的返回值也是值"0"等. (9认同)
  • 如果你改变'$ 4th`,你将不会改变其余部分,因为`0`是一个值,而不是一个引用.如果你会做'$ fourth = 0; $ third =&$ 4th; $ second =&$ 4th; $ first =&$ fourth`,然后所有其他变量将引用`$ fourth`(不是值'0`),并且更改`$ fourth`也会反映在其他变量中. (6认同)

sle*_*vy1 18

虽然在for循环中使用逗号运算符初始化多个变量是可行的,如下所示:

<?php
for ($a=0,$b=0,$c=0,$d=0;;) {
    break;
}
var_dump($a,$b,$c,$d);
Run Code Online (Sandbox Code Playgroud)

(见这里的演示)

列表构建体提供执行多个变量赋值一个更有效的方式,如在下面的示例中所描绘的:

<?php

list( $first, $second, $third, $fourth ) = array( 0, 0, 0, 0 );
var_dump($first, $second, $third, $fourth );
Run Code Online (Sandbox Code Playgroud)

在这里看演示

人们可能希望重新考虑避免使用数组来实现多个初始化变量.使用PHP7.1 +,如果使用短数组语法的数组解构,可以编写更简单,更健壮的代码,如下所示:

<?php

[$first, $second, $third, $fourth ] = [0, 0, 0, 0];
var_dump($first, $second, $third, $fourth );
Run Code Online (Sandbox Code Playgroud)

在这里看演示.

如果需要确定初始化的变量之前未设置,请参阅此相关讨论,尤其是此响应.