Mehrere Variablen gleichzeitig denselben Wert zuweisen?


115

Wie kann ich denselben Wert für mehrere Variablen in PHP gleichzeitig zuweisen?

Ich habe so etwas wie:

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

In meinem Fall kann ich nicht alle Variablen so umbenennen, dass sie denselben Namen haben (was die Sache einfacher machen würde). Gibt es also eine Möglichkeit, allen Variablen den gleichen Wert viel kompakter zuzuweisen?

Antworten:


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

Genial, hat perfekt für mich funktioniert $ level1 = $ level2 = $ level3 = $ level4 = false;
Geilt

1
Gibt es irgendwelche Grenzen?
Dipi böse

9
Dies kann nicht in der PHP-Klasse verwendet werden und dies ist der Rohtyp.
Chaminda Bandara

@ChamindaBandara was meinst du damit, dass es nicht in einer PHP-Klasse verwendet werden kann?
Eoin

4
@Eoin: Dabei verweisen $var_a = $var_b = ... = new Class();alle Variablen auf dieselbe Instanz von Class.
Tim Cooper

1

Zur anderen Antwort hinzufügen.

$a = $b = $c = $d bedeutet eigentlich $a = ( $b = ( $c = $d ) )

PHP übergibt standardmäßig primitive Typen als int, string, etc.Wert und Objekte standardmäßig als Referenz .

Das bedeutet

$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

Sie KÖNNEN Objekte jedoch auch mit dem Schlüsselwort als Wert übergeben, clonemüssen jedoch Klammern verwenden.

$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

ABER mit dieser Methode können Sie keine primitiven Typen als Referenz mit dem Schlüsselwort übergeben&

$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.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.