Warum ist -1 > null in PHP wahr?

Lesezeit: 1 Minute

Benutzer-Avatar
Marco de Jongh

In PHP (5.3.14) wird der folgende Code zurückgegeben true:

-1 > null

Der exakt gleiche Code in JavaScript gibt zurück false. Was ist der Grund dafür?

  • php.net/manual/en/language.operators.comparison.php

    – Amal Murali

    1. Mai 2014 um 9:54 Uhr

  • Warum sollten zwei verschiedene Sprachen gezwungen sein, Dinge auf die gleiche Weise zu implementieren?

    – Sauerstoff

    1. Mai 2014 um 18:53 Uhr

  • Versuchen Sie, solche „Warum“-Fragen zu vermeiden; sie sind vage und schwer zu beantworten. Die Frage „Welcher Abschnitt der JavaScript-Spezifikation beschreibt wie -1 > null wird berechnet?” ist eine Frage, die eine klare Antwort hat.

    – Eric Lippert

    1. Mai 2014 um 19:33 Uhr

Benutzer-Avatar
Qantas 94 Schwer

PHP konvertiert beide Seiten in boolesche Werte, wenn auf einer Seite eine Null steht.

Der PHP-Handbuchabschnitt auf Vergleichsoperatoren besagt, dass, wenn der Typ von Operand 1 “bool oder null” ist, oder umgekehrt, “beide Seiten in bool konvertiert werden, FALSE < TRUE“.

Jede Zahl, die einen Wert ungleich Null hat, ist als Wahrheit angesehenobwohl dies möglicherweise nicht intuitiv ist.


In JavaScript ist der Vergleich anders definiert, sodass sie numerisch verglichen werden (null -> 0).

ECMA-262die offizielle JavaScript-Spezifikation, besagt Folgendes:

3. Wenn nicht sowohl Type(px) String als auch Type(py) String ist, dann

a. Sei nx das Ergebnis des Aufrufs von ToNumber(px). Da px und py primitive Werte sind, ist die Auswertungsreihenfolge nicht wichtig.
b. Sei ny das Ergebnis des Aufrufs von ToNumber(py).

PHP ist bekannt dafür, ein ziemlich inkonsistentes Typenzwangssystem zu haben — PHP: ein Fraktal schlechten Designs hebt einige andere Probleme hervor, unter denen PHP leidet. (Ich wage es zu sagen, ich persönlich denke, dass es schlimmer ist als JavaScript, eine Sprache, die auch für hinterhältige Typzwang bekannt ist.)

1143570cookie-checkWarum ist -1 > null in PHP wahr?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy