Tetapkan nilai yang sama ke beberapa variabel sekaligus?

115

Bagaimana saya bisa menetapkan nilai yang sama untuk beberapa variabel di PHP sekaligus?

Saya punya sesuatu seperti:

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

Dalam kasus saya, saya tidak dapat mengganti nama semua variabel menjadi memiliki nama yang sama (yang akan membuat segalanya lebih mudah), jadi adakah cara untuk menetapkan nilai yang sama ke semua variabel dengan cara yang jauh lebih kompak?

pengguna983248
sumber

Jawaban:

248
$var_a = $var_b = $same_var = $var_d = $some_var = 'A';
Tim Cooper
sumber
Brilian, bekerja sempurna untuk saya $ level1 = $ level2 = $ level3 = $ level4 = false;
Geilt
1
Ada batasannya?
dipi evil
9
Ini tidak dapat digunakan di kelas Php dan ini adalah tipe mentah.
Chaminda Bandara
@ChamindaBandara apa yang Anda maksud tidak dapat digunakan di kelas PHP?
Eoin
4
@Eoin: Saat melakukan $var_a = $var_b = ... = new Class();, semua variabel akan mereferensikan instance yang sama dari Class.
Tim Cooper
1

Untuk menambah jawaban lainnya.

$a = $b = $c = $d sebenarnya berarti $a = ( $b = ( $c = $d ) )

PHP meneruskan tipe primitif int, string, etc.berdasarkan nilai dan objek dengan referensi secara default.

Itu berarti

$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

Namun, Anda BISA melewatkan objek dengan nilai juga, menggunakan kata kunci clone, tetapi Anda harus menggunakan tanda kurung.

$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

TAPI, Anda TIDAK DAPAT melewatkan tipe primitif dengan referensi dengan kata kunci & menggunakan metode ini

$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.
Xeuron
sumber