Warum verhält sich der PHP-Nullkoaleszenzoperator (??) mit == und === irrational?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Warum verhält sich der PHP-Nullkoaleszenzoperator (??) mit == und === irrational?

by Guest » 12 Jan 2025, 10:17

Code: Select all

var_dump(3 ?? null);
var_dump(3 ?? null === null);
var_dump(3 === null);
var_dump(3 ?? 1 > 2);
var_dump(null ?? 1 > 2);
Was sind Ihrer Meinung nach die Ergebnisse?

Die Frage lautet also eigentlich:
Warum ist der Wert der PHP-Engine === höher als ??? In welcher Welt würde irgendjemand es so vergleichen wollen, wenn ($count ?? (null === null)) wäre, wenn das so kontraintuitiv zum gewünschten if (($count) ist ?? null) === null)?
Gegeben $count = 3; if ($count ?? 1 > 2), als rationaler Mensch würde ich erwarten, dass dies zu if ((3 ?? 1) > 2) -> if (3 > 2) ausgewertet wird und true zurückgeben. Stattdessen wird if (3 ?? (1 > 2) -> if (3) ausgewertet, was zufällig der Wahrheit entspricht. Aber ich glaube nicht, dass irgendjemand diese Auswertung vernünftigerweise wollen würde...
Es scheint mir ein Fehler im Interpreter zu sein. Gibt es einen guten Grund für diesen Zustand?

Top