【问题标题】:Initializing Multiple PHP Variables Simultaneously同时初始化多个 PHP 变量
【发布时间】:2012-03-27 22:49:12
【问题描述】:

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

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

【问题讨论】:

标签: php


【解决方案1】:
$first = $second = $third = $fourth = 0;

【讨论】:

  • 这不是遇到了当你改变$fourth的时候,你也改变了其余的问题吗?
  • 如果你改变$fourth,你不会改变其余的,因为0是一个值,而不是一个引用。如果您会执行类似$fourth = 0; $third = &$fourth; $second = &$fourth; $first = &$fourth 的操作,那么所有其他变量都将引用$fourth(而不是值0),并且更改$fourth 也会反映在其他变量中。
  • 这种多重赋值有效,因为在 PHP 中,赋值是一个返回赋值的表达式。因此,$fourth = 0 是一个返回值0 的表达式。然后这个值被赋值给$third,由于这个赋值也是一个表达式,所以将0赋值给$third的返回值又是0的值,等等。
【解决方案2】:

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

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

(见演示here

list 结构提供了一种更有效的方式来执行多变量赋值,如下例所示:

<?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

【讨论】:

  • 您可以使用这种方法来声明具有不同值的多个变量,这使得它更加有用。
  • @Alec 这对于声明具有不同值的变量有点混乱。
【解决方案3】:

如果要初始化多个数组变量,请使用

# Initialize multiple array variables with Empty values
$array_1 = $array_2 = $array_3 = array();

# Initialize multiple array variables with Some values in it
list( $array_1, $array_2, $array_3) = array('one','two','three');

# Print value of array variables
var_dump($array_1,$array_2,$array_3);

Output:
*******
string 'one' (length=3)
string 'two' (length=3)
string 'three' (length=5)

如果要初始化多个常规变量,请使用

# Initialize multiple regular variables with values
$a = $b = $c = 'Hello PHP';
echo $a.'<br>',$b.'<br>', $c.'<br>';

Output:
*******
Hello PHP
Hello PHP
Hello PHP

【讨论】:

    猜你喜欢
    • 2015-01-17
    • 2013-03-04
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2019-05-17
    相关资源
    最近更新 更多