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);
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?