4 Stimmen

Mehrfache Zuweisungen an dieselbe Variable

Warum erhalte ich einen Parse-Fehler bei diesem Code?

$func = "do_{$something}" = $func();

?

Sie sollte korrekt sein, weil

$func = "do_{$something}";
$func = $func();

funktioniert...

6voto

Joseph Silber Punkte 204811

Weil der Auftrag funktioniert von rechts nach links .

Sehen Sie sich diesen Code als Beispiel an:

$a = $b = 3;

Wenn die Zuweisung von links erfolgt, wird dies wie folgt geparst:

$a = $b;
$b = 3;

was zu einem Fehler bezüglich einer undefinierten Variable führen würde.

Stattdessen wird es geparst als:

$b = 3;
$a = $b;

5voto

Tim Cooper Punkte 150521

Was Sie zu tun versuchen, entspricht dem Folgenden:

"do_{$something}" = $func();
$func = "do_{$something}";

Das hat offensichtlich Syntaxfehler. Ihr zweiter Codeblock lässt sich nicht gut lesen, da Sie die Variable Funktionsname mit dem Ergebnis des Funktionsaufrufs überschreiben. Ein sauberer Weg, dies zu tun, wäre:

$result = call_user_func('do_' . $something);

3voto

lonesomeday Punkte 224087

Sie ist ungültig, weil die = Betreiber ist rechts-assoziativ . Dies bedeutet, dass die ganz rechte = wird zuerst ausgeführt, so dass Ihr Code eigentlich dem hier entspricht:

"do_{$something}" = $func();
$func = "do_{$something}";

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X