Ein Zuweisungsausdruck in PHP gibt den zugewiesenen Wert zurück. Von t he documentation:
Der Wert eines Zuweisungsausdrucks ist der zugewiesene Wert.
Also, wenn unabhängig von funky()
wieder etwas lose gleich null
auswertet, wird $var = funky()
auf falsch bewerten, so dass der if
Block nicht ausgeführt wird.
Die Zuweisung in der if
-Bedingung wirkt sich jedoch nicht auf den Bereich der zugewiesenen Variablen aus. $var
wird im aktuellen Bereich (innerhalb und außerhalb des if-Blocks) nach der Zuweisungsanweisung verfügbar sein.
Zum Beispiel:
function funky() {
return false;
}
if(($var = funky()) != null) {
echo 'something';
}
var_dump($var);
Hier werden Sie nur boolean false
Die einzige Möglichkeit sehe ich denken kann, um sicherzustellen, dass eine Variable nur verfügbar ist, im Inneren ein if
Block ist Weisen Sie es dort zu und heben Sie es vor dem Ende des Blocks auf.
if (funky() != null) { // evaluate funky() without assigning
$var = funky(); // call funky() again to assign
// do stuff
unset($var);
}
Aber ich kann nicht wirklich einen guten Grund dafür denken.
'if ($ var = funky())' - Ich nehme an, dass das Pseudo-Code ist? Wenn nicht, dann machst du '=', anstatt '==' zu vergleichen, es sei denn, du willst das machen. –
* "Wird der Code innerhalb des if-Blocks weiterhin ausgeführt oder benötige ich auch einen bedingten?" * - Ja, weil er immer als TRUE betrachtet wird, da es sich um eine Zuweisung handelt. Deine Eingabe: * "wie wenn (! Leer ($ var = funky()))" * - nur wenn es nicht leer ist. –
@ Fred-ii- Ich glaube ich habe dich, also wird die variable Zuweisung in diesem Fall ** immer ** sein. Das macht es im Grunde sinnlos, wenn ich keine Bedingung hinzufüge –