Assegnare lo stesso valore a più variabili contemporaneamente?


115

Come posso assegnare lo stesso valore a più variabili in PHP contemporaneamente?

Ho qualcosa come:

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

Nel mio caso, non posso rinominare tutte le variabili in modo che abbiano lo stesso nome (ciò renderebbe le cose più facili), quindi esiste un modo per assegnare lo stesso valore a tutte le variabili in un modo molto più compatto?

Risposte:


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

Brillante, ha funzionato perfettamente per me $ level1 = $ level2 = $ level3 = $ level4 = false;
geilt

1
Ci sono limiti?
dipi evil

9
Non può essere utilizzato nella classe Php e questo è il tipo grezzo.
Chaminda Bandara

@ChamindaBandara cosa vuoi dire che non può essere utilizzato in una classe PHP?
Eoin

4
@Eoin: Nel fare $var_a = $var_b = ... = new Class();, tutte le variabili faranno riferimento alla stessa istanza di Class.
Tim Cooper

1

Da aggiungere all'altra risposta.

$a = $b = $c = $d in realtà significa $a = ( $b = ( $c = $d ) )

PHP passa i tipi primitivi int, string, etc.per valore e gli oggetti per riferimento per impostazione predefinita.

Questo significa

$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

Tuttavia, puoi anche passare oggetti per valore, usando la parola chiave clone, ma dovrai usare le parentesi.

$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

MA NON PUOI passare tipi primitivi per riferimento con parole chiave & usando questo metodo

$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.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.