Heim > Artikel > Backend-Entwicklung > Ich verstehe die Vorsichtsmaßnahmen für den ternären Operator in der PHP-Dokumentation nicht
Hinweis: Beachten Sie, dass der ternäre Operator eine Anweisung ist, seine Auswertung also keine Variable, sondern das Ergebnis der Anweisung ist. Dies ist wichtig, wenn Sie eine Variable per Referenz zurückgeben möchten. Die Anweisung return $var == 42 ? $a : $b; in einer Funktion, die per Referenz zurückgibt, wird nicht funktionieren und eine zukünftige Version von PHP wird eine Warnung darüber ausgeben.
return $var == 42 ? $a : $b;
Was bedeutet es, dass es nicht funktioniert? Kann es keinen Wert zurückgeben oder so?
<code class="php">function test($var){ return $var == 42 ? 1 : 2; } echo test(40); //2</code>
Auf diese Weise können Sie es während des Tests zurückgeben...
Hinweis: Beachten Sie, dass der ternäre Operator eine Anweisung ist, seine Auswertung also keine Variable, sondern das Ergebnis der Anweisung ist. Dies ist wichtig, wenn Sie eine Variable per Referenz zurückgeben möchten. Die Anweisung return $var == 42 ? $a : $b; in einer Funktion, die per Referenz zurückgibt, wird nicht funktionieren und eine zukünftige Version von PHP wird eine Warnung darüber ausgeben.
return $var == 42 ? $a : $b;
Was bedeutet es, dass es nicht funktioniert? Kann es keinen Wert zurückgeben oder so?
<code class="php">function test($var){ return $var == 42 ? 1 : 2; } echo test(40); //2</code>
Auf diese Weise können Sie es während des Tests zurückgeben...
Betrifft das Szenario „Zurückgeben einer Variablen als Referenz“
Siehe Beispiel: get2 kann nicht die erwarteten Ergebnisse erzielen
https://3v4l.org/2Q9ai
<code class="php"><?php $data = new stdClass; $data->a = 13; $data->b = 42; $var = &get1($data, true); $var = 14; var_dump($data); $var2 = &get2($data, false); $var2 = 43; var_dump($data); function &get1($data, $isA) { if($isA) { return $data->a; } else { return $data->b; } } function &get2($data, $isA) { return $isA ? $data->a : $data->b; }</code>