一度に複数の変数に同じ値を割り当てますか?


115

PHPの複数の変数に同じ値を一度に割り当てるにはどうすればよいですか?

私のようなものがあります:

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

私の場合、すべての変数の名前を同じ名前に変更することはできません(これにより、より簡単になります)ので、よりコンパクトな方法ですべての変数に同じ値を割り当てる方法はありますか?

回答:


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

素晴らしい、私にとって完璧に働いた$ level1 = $ level2 = $ level3 = $ level4 = false;
geilt

1
制限はありますか?
dipi evil 2014

9
これはPhpクラスでは使用できません。これはrawタイプです。
Chaminda Bandara 2016

@ChamindaBandara PHPクラスで使用できないとはどういう意味ですか?
Eoin

4
@Eoin:実行中$var_a = $var_b = ... = new Class();、すべての変数はの同じインスタンスを参照しますClass
Tim Cooper

1

他の答えに追加します。

$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

ただし、keywordを使用して値でオブジェクトを渡すこともできますが、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.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.