2012-03-11 103 views
31

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

$first = 0; 
$second = 0; 
$third = 0; 
$fourth = 0; 
+0

可能重复的[赋值给多个变量](http://stackoverflow.com/questions/11651594/assign-same-value-to-multiple-variables) – 2016-08-27 00:56:45

回答

62
$first = $second = $third = $fourth = 0; 
+0

这是否会遇到问题,当你改变$第四,你也改变了其余的? – Alec 2016-07-28 08:09:47

+2

如果更改'$ fourth',则不会更改其余部分,因为'0'是一个值,而不是参考。如果你会做'$ fourth = 0; $ third =&$ fourth; $ second =&$ fourth; $ first =&$ fourth',那么所有其他变量将是对'$ fourth'(而不是值“0”)的引用,并且改变'$ fourth'也会反映在其他变量中。 – rid 2016-07-28 17:14:14

+5

这种多重赋值的工作原理是,在PHP中,赋值是一个返回赋值的表达式。因此,'$ fourth = 0'是返回值'0'的表达式。这个值然后被分配给'$ third',并且,因为这个赋值也是一个表达式,所以将'0'赋给'$ third'的返回值也是值'0'等。 – rid 2016-07-28 17:17:04

15

虽然是可行的使用中的for循环,如下逗号操作者初始化多个变量:

<?php 
for ($a=0,$b=0,$c=0,$d=0;;) { 
    break; 
} 
var_dump($a,$b,$c,$d); 

(见演示here

list构造提供了一种更有效的方式来执行多个变量屁股ignment,如所描绘的在下面的例子:

<?php 

list($first, $second, $third, $fourth) = array(0, 0, 0, 0); 
var_dump($first, $second, $third, $fourth); 

见演示here

人们可能希望重新考虑避免阵列的使用,以实现多个初始化的变量。与PHP7.1如果一个利用array destructuring可用短数组语法+可以写成简单,健壮的代码,如下所示:

<?php 

[$first, $second, $third, $fourth ] = [0, 0, 0, 0]; 
var_dump($first, $second, $third, $fourth); 

见演示here

如果您需要确定之前未设置初始化变量,请参阅此相关discussion,特别是此response

+1

你可以使用这个方法用于声明多个具有不同值的变量,这使得它更有用。 – Alec 2016-07-28 08:09:04

+0

@Alec这对于声明具有不同值的变量有点混乱。 – 2017-12-09 08:12:05