一次为多个变量分配相同的值?

Posted

技术标签:

【中文标题】一次为多个变量分配相同的值?【英文标题】:Assign same value to multiple variables at once? 【发布时间】:2012-07-23 23:52:17 【问题描述】:

如何在 php

我有类似的东西:

$var_a = 'A';
$var_b = 'A';
$same_var = 'A';
$var_d = 'A';
$some_var ='A';

就我而言,我无法将所有变量重命名为相同的名称(这会使事情变得更容易),那么有没有办法以更紧凑的方式为所有变量分配相同的值?

【问题讨论】:

【参考方案1】:
$var_a = $var_b = $same_var = $var_d = $some_var = 'A';

【讨论】:

太棒了,非常适合我 $level1 = $level2 = $level3 = $level4 = false; 这不能在 Php 类中使用,这是原始类型。 @ChamindaBandara 你是什么意思它不能在 PHP 类中使用? @Eoin:在做$var_a = $var_b = ... = new Class();时,所有变量都会引用Class的同一个实例。 @Eoin 这意味着,此语法仅适用于 PHP 服务器端脚本,不适用于 PHP 中的面向对象编程。如果你在 PHP 类中使用这个方法,你会得到一个错误。【参考方案2】:

添加到另一个答案。

$a = $b = $c = $d 实际上是指$a = ( $b = ( $c = $d ) )

PHP 通过值传递原始类型int, string, etc.,通过引用传递对象默认情况下。

意思是

$c = 1234;
$a = $b = $c;
$c = 5678;
//$a and $b = 1234; $c = 5678;

$c = new Object();
$c->property = 1234;
$a = $b = $c;
$c->property = 5678;
// $a,b,c->property = 5678 because they are all referenced to same variable

不过,您也可以按值传递对象,使用关键字clone,但您必须使用括号。

$c = new Object();
$c->property = 1234;
$a = clone ($b = clone $c);
$c->property = 5678;
// $a,b->property = 1234; c->property = 5678 because they are cloned

但是,您不能通过关键字& 的引用传递原始类型使用此方法

$c = 1234;

$a = $b = &$c; // no syntax error
// $a is passed by value. $b is passed by reference of $c

$a = &$b = &$c; // syntax error

$a = &($b = &$c); // $b = &$c is okay. 
// but $a = &(...) is error because you can not pass by reference on value (you need variable)

// You will have to do manually
$b = &$c;
$a = &$b;
etc.

【讨论】:

以上是关于一次为多个变量分配相同的值?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以一次为多个指令定义 $IFDEF ?

使用相同的代码一次为其他文件生成相同的图形

labview中 如何将一个全局变量在一个Vi中使用2次,其中一次作为读的状态,另一次为写的状态。谢谢!

使用 CoreAnimation 一次为多个 UIView 设置动画

一次为多个用户提供 PHP $_SESSION

phpMyAdmin 一次为多个表“转储一些行”