ungleich - php vergleichsoperatoren string




Type-Juggling und(strikte) Größer/Kleiner als Vergleiche in PHP (2)

Die Vergleichsoperatoren von PHP weichen in mehrfacher Hinsicht von den computerwissenschaftlichen Definitionen ab:

Um eine Äquivalenzrelation zu bilden, muss = reflexiv, symmetrisch und transitiv sein:

  • PHP == Operator ist nicht reflexiv , dh $a == $a ist nicht immer wahr:

    var_dump(NAN == NAN); // bool(false)
    

    Hinweis: Die Tatsache, dass ein Vergleich mit NAN immer false ist, ist nicht spezifisch für PHP. Es ist vom IEEE-754-Standard für Gleitkommaarithmetik vorgeschrieben ( weitere Informationen ).

  • Der PHP == Operator ist symmetrisch , dh $a == $b und $b == $a sind immer gleich.

  • PHP == Operator ist nicht transitiv , dh von $a == $b und $b == $c folgt nicht $a == $c :

    var_dump(true == "a"); // bool(true)
    var_dump("a" == 0);    // bool(true)
    var_dump(true == 0);   // bool(false)
    

Um eine partielle Ordnung zu bilden, muss <= / >= reflexiv, antisymmetrisch und transitiv sein:

  • PHPs <= Operator ist nicht reflexiv , dh $a <= $a ist nicht immer wahr (Beispiel wie für == ).

  • PHPs <= Operator ist nicht anti-symmetrisch , dh von $a <= $b und $b <= $a folgt nicht $a == $b :

    var_dump(NAN <= "foo"); // bool(true)
    var_dump("foo" <= NAN); // bool(true)
    var_dump(NAN == "foo"); // bool(false)
    
  • Der PHP <= Operator ist nicht transitiv , dh von $a <= $b und $b <= $c folgt nicht $a <= $c (Beispiel wie für == ).

  • Extra: PHPs <= Operator ist nicht total , dh sowohl $a <= $b als auch $b <= $a können falsch sein:

    var_dump(new stdClass <= new DateTime); // bool(false)
    var_dump(new DateTime <= new stdClass); // bool(false)
    

Um eine strikte partielle Ordnung zu bilden, muss < / > irreflexiv, asymmetrisch und transitiv sein:

  • PHPs < Operator ist irreflexiv , dh $a < $a ist niemals wahr. Beachten Sie, dass dies erst ab PHP 5.4 gilt . Zuvor wurde INF < INF als true bewertet.

  • PHPs < Operator ist nicht asymmetrisch , dh von $a < $b folgt nicht !($b < $a) (Beispiel wie für <= nicht antisymmetrisch).

  • PHPs < operator ist nicht transitiv , dh von $a < $b und $b < $c folgt nicht $a < $c :

    var_dump(-INF < 0);    // bool(true)
    var_dump(0 < TRUE);    // bool(true)
    var_dump(-INF < TRUE); // bool(false)
    
  • Extra: PHPs < Operator ist nicht trichotom , dh alle von $a < $b , $b < $a und $a == $b können falsch sein (Beispiel wie für <= nicht total).

  • Extra: PHPs < Operator kann zirkulär sein , dh es ist möglich, dass $a < $b , $b < $c und $c < $a :

    var_dump(INF < []);           // bool(true)
    var_dump([] < new stdClass);  // bool(true)
    var_dump(new stdClass < INF); // bool(true)
    

    Hinweis: Im obigen Beispiel wird die Meldung "Objekt der Klasse stdClass konnte nicht in Double konvertiert" ausgegeben.

Sie können ein paar nette Graphen für PHP Vergleichsoperatoren auf PHP Sadness 52 - Vergleichsoperatoren finden .

Als letzte Anmerkung möchte ich darauf hinweisen, dass es zwei Gleichheiten gibt, die PHP garantiert (im Gegensatz zu allem anderen). Diese beiden halten immer, einfach weil der Compiler den einen auf den anderen reduziert:

($a > $b) == ($b < $a)
($a >= $b) == ($b <= $a)

PHP ist berühmt für sein Typ-Jonglieren. Ich muss zugeben, dass es mich verwirrt, und es fällt mir schwer, grundlegende logische / fundamentale Dinge in Vergleichen herauszufinden.

Zum Beispiel: Wenn $a > $b wahr ist und $b > $c wahr ist, muss das auch bedeuten, dass $a > $c immer auch wahr ist?

Der Grundlogik folgend, würde ich ja sagen, aber ich bin so verwirrt, dass ich PHP darin nicht wirklich vertraue. Vielleicht kann jemand ein Beispiel geben, wo dies nicht der Fall ist?

Ich frage mich auch mit den strikten Kleiner-als- und Strikten-Größer-als-Operatoren (wie ihre Bedeutung als streng beschrieben wird, die ich nur in der Vergangenheit aus den Gleichheitsvergleichen kannte), wenn es einen Unterschied macht, ob linke und rechte Operanden getauscht werden streng ungleichen Werte:

# Precondition:
if ($a === $b) {
    throw new Exception(
       'Both are strictly equal - can not compare strictly for greater or smaller'
    );
}

($a > $b) !== ($b > $a)

Für die meisten Typvergleichskombinationen sind diese größeren / kleineren Vergleichsoperatoren nicht dokumentiert, so dass das Lesen des Handbuchs in diesem Fall nicht wirklich hilfreich war.


Es gibt keine strikt identischen Vergleichsoperatoren ( >== oder <== ) in PHP (mindestens PHP 5.6.14) , aber es gibt einige Möglichkeiten , eine strikte Typprüfung zu erzwingen, bevor Sie Greater / Lower überprüfen:

  1. Überprüfen Sie beide Variablentypen mit if (gettype($a) === gettype($b))
  2. Erzwingen Sie Ihre benötigte Schriftform, z. if ((string)$a === (string)$b)
  3. Erzwinge deinen benötigten Typ-Jongle zB. if (($a . '') === ($b . ''))

Beachten Sie Folgendes:

  • Fließkomma-Präzision ist begrenzt
  • INF und NAN sind vom Typ float unter ieee754
  • Eine Unendlichkeit entspricht einer anderen Unendlichkeit (seit PHP 5.4)
  • Die wissenschaftliche Notation e ist immer vom Typ float und niemals integer auch wenn die Zahl klein ist
  • Ganzzahlen, die PHP_INT_MAX , werden automatisch in float konvertiert
  • Floats über Systemgrenzen erhalten den INF Wert
  • Nicht definierte Variablen haben den Typ und den Wert NULL
  • Ganzzahlen mit 0 werden von oktal in dezimal konvertiert (per Konvention)
  • Konvertieren von Strings, die eine Ganzzahl mit einer führenden 0 zu einer Ganzzahl striped die führende 0

Liste einiger exotischer Vergleiche:

Very strange:
     $a      VS.     $b         $a>$b   $a<$b   $a<=$b  $a>=$b  $a==$b  $a===$b
  float(NAN)    float(-INF)     false   false   false   false   false   false
  float(NAN)      float(0)      false   false   false   false   false   false
  float(NAN)      float(1)      false   false   false   false   false   false
  float(NAN)     float(INF)     false   false   false   false   false   false
  float(NAN)     float(NAN)     false   false   false   false   false   false
  float(NAN)      int(-1)       false   false   false   false   false   false
  float(NAN)       int(0)       false   false   false   false   false   false
  float(NAN)       int(1)       false   false   false   false   false   false

Gleich, aber nicht identisch:

     $a      VS.     $b         $a>$b   $a<$b   $a<=$b  $a>=$b  $a==$b  $a===$b
  NULL(NULL)      array()       false   false    true    true    true   false
  NULL(NULL)    bool(false)     false   false    true    true    true   false
  NULL(NULL)      float(0)      false   false    true    true    true   false
  NULL(NULL)       int(0)       false   false    true    true    true   false
  NULL(NULL)      str('')       false   false    true    true    true   false
   array()      bool(false)     false   false    true    true    true   false
 bool(false)      float(0)      false   false    true    true    true   false
 bool(false)       int(0)       false   false    true    true    true   false
   str('')      bool(false)     false   false    true    true    true   false
 bool(false)      str('0')      false   false    true    true    true   false
 float(-INF)     bool(true)     false   false    true    true    true   false
  bool(true)      float(1)      false   false    true    true    true   false
  float(INF)     bool(true)     false   false    true    true    true   false
  float(NAN)     bool(true)     false   false    true    true    true   false
  bool(true)      int(-1)       false   false    true    true    true   false
  bool(true)       int(1)       false   false    true    true    true   false
  bool(true)     str("\0")      false   false    true    true    true   false
  bool(true)      str('+')      false   false    true    true    true   false
  bool(true)      str('-')      false   false    true    true    true   false
  bool(true)     str('01')      false   false    true    true    true   false
  bool(true)      str('1')      false   false    true    true    true   false
  bool(true)    str('false')    false   false    true    true    true   false
 str('text')     bool(true)     false   false    true    true    true   false
 str('true')     bool(true)     false   false    true    true    true   false
    int(0)        float(0)      false   false    true    true    true   false
  str("\0")       float(0)      false   false    true    true    true   false
   str('')        float(0)      false   false    true    true    true   false
   str('+')       float(0)      false   false    true    true    true   false
   str('-')       float(0)      false   false    true    true    true   false
   str('0')       float(0)      false   false    true    true    true   false
 str('false')     float(0)      false   false    true    true    true   false
 str('text')      float(0)      false   false    true    true    true   false
 str('true')      float(0)      false   false    true    true    true   false
    int(1)        float(1)      false   false    true    true    true   false
   float(1)      str('01')      false   false    true    true    true   false
   float(1)       str('1')      false   false    true    true    true   false
  str("\0")        int(0)       false   false    true    true    true   false
   str('')         int(0)       false   false    true    true    true   false
   str('+')        int(0)       false   false    true    true    true   false
   str('-')        int(0)       false   false    true    true    true   false
    int(0)        str('0')      false   false    true    true    true   false
 str('false')      int(0)       false   false    true    true    true   false
 str('text')       int(0)       false   false    true    true    true   false
 str('true')       int(0)       false   false    true    true    true   false
    int(1)       str('01')      false   false    true    true    true   false
    int(1)        str('1')      false   false    true    true    true   false
   str('1')      str('01')      false   false    true    true    true   false

Nieder und Größer gleichzeitig?

     $a      VS.     $b         $a>$b   $a<$b   $a<=$b  $a>=$b  $a==$b  $a===$b
  float(NAN)     str("\0")       true    true    true    true   false   false
  float(NAN)      str('')        true    true    true    true   false   false
  float(NAN)      str('+')       true    true    true    true   false   false
  float(NAN)      str('-')       true    true    true    true   false   false
  float(NAN)      str('0')       true    true    true    true   false   false
  float(NAN)     str('01')       true    true    true    true   false   false
  float(NAN)      str('1')       true    true    true    true   false   false
  float(NAN)    str('false')     true    true    true    true   false   false
  float(NAN)    str('text')      true    true    true    true   false   false
  float(NAN)    str('true')      true    true    true    true   false   false

Gleich UND identisch:

     $a      VS.     $b         $a>$b   $a<$b   $a<=$b  $a>=$b  $a==$b  $a===$b
  NULL(NULL)     NULL(NULL)     false   false    true    true    true    true
 float(-INF)    float(-INF)     false   false    true    true    true    true
  float(INF)     float(INF)     false   false    true    true    true    true

Niedriger oder größer:

     $a      VS.     $b         $a>$b   $a<$b   $a<=$b  $a>=$b  $a==$b  $a===$b
  NULL(NULL)     bool(true)     false    true    true   false   false   false
 float(-INF)     NULL(NULL)      true   false   false    true   false   false
  NULL(NULL)      float(1)      false    true    true   false   false   false
  float(INF)     NULL(NULL)      true   false   false    true   false   false
  float(NAN)     NULL(NULL)      true   false   false    true   false   false
  NULL(NULL)      int(-1)       false    true    true   false   false   false
  NULL(NULL)       int(1)       false    true    true   false   false   false
  NULL(NULL)     str("\0")      false    true    true   false   false   false
  NULL(NULL)      str('+')      false    true    true   false   false   false
  NULL(NULL)      str('-')      false    true    true   false   false   false
  NULL(NULL)      str('0')      false    true    true   false   false   false
  NULL(NULL)     str('01')      false    true    true   false   false   false
  NULL(NULL)      str('1')      false    true    true   false   false   false
  NULL(NULL)    str('false')    false    true    true   false   false   false
  NULL(NULL)    str('text')     false    true    true   false   false   false
  NULL(NULL)    str('true')     false    true    true   false   false   false
   array()       bool(true)     false    true    true   false   false   false
 float(-INF)      array()       false    true    true   false   false   false
   array()        float(0)       true   false   false    true   false   false
   array()        float(1)       true   false   false    true   false   false
  float(INF)      array()       false    true    true   false   false   false
  float(NAN)      array()       false    true    true   false   false   false
   array()        int(-1)        true   false   false    true   false   false
   array()         int(0)        true   false   false    true   false   false
   array()         int(1)        true   false   false    true   false   false
   array()       str("\0")       true   false   false    true   false   false
   str('')        array()       false    true    true   false   false   false
   array()        str('+')       true   false   false    true   false   false
   array()        str('-')       true   false   false    true   false   false
   array()        str('0')       true   false   false    true   false   false
   array()       str('01')       true   false   false    true   false   false
   array()        str('1')       true   false   false    true   false   false
   array()      str('false')     true   false   false    true   false   false
   array()      str('text')      true   false   false    true   false   false
   array()      str('true')      true   false   false    true   false   false
  bool(true)    bool(false)      true   false   false    true   false   false
 float(-INF)    bool(false)      true   false   false    true   false   false
   float(1)     bool(false)      true   false   false    true   false   false
  float(INF)    bool(false)      true   false   false    true   false   false
  float(NAN)    bool(false)      true   false   false    true   false   false
 bool(false)      int(-1)       false    true    true   false   false   false
    int(1)      bool(false)      true   false   false    true   false   false
 bool(false)     str("\0")      false    true    true   false   false   false
 bool(false)      str('+')      false    true    true   false   false   false
 bool(false)      str('-')      false    true    true   false   false   false
 bool(false)     str('01')      false    true    true   false   false   false
   str('1')     bool(false)      true   false   false    true   false   false
 bool(false)    str('false')    false    true    true   false   false   false
 str('text')    bool(false)      true   false   false    true   false   false
 str('true')    bool(false)      true   false   false    true   false   false
  bool(true)      float(0)       true   false   false    true   false   false
  bool(true)       int(0)        true   false   false    true   false   false
   str('')       bool(true)     false    true    true   false   false   false
  bool(true)      str('0')       true   false   false    true   false   false
 float(-INF)      float(0)      false    true    true   false   false   false
 float(-INF)      float(1)      false    true    true   false   false   false
  float(INF)    float(-INF)      true   false   false    true   false   false
 float(-INF)      int(-1)       false    true    true   false   false   false
 float(-INF)       int(0)       false    true    true   false   false   false
 float(-INF)       int(1)       false    true    true   false   false   false
 float(-INF)     str("\0")      false    true    true   false   false   false
 float(-INF)      str('')       false    true    true   false   false   false
 float(-INF)      str('+')      false    true    true   false   false   false
 float(-INF)      str('-')      false    true    true   false   false   false
 float(-INF)      str('0')      false    true    true   false   false   false
 float(-INF)     str('01')      false    true    true   false   false   false
 float(-INF)      str('1')      false    true    true   false   false   false
 float(-INF)    str('false')    false    true    true   false   false   false
 float(-INF)    str('text')     false    true    true   false   false   false
 float(-INF)    str('true')     false    true    true   false   false   false
   float(1)       float(0)       true   false   false    true   false   false
  float(INF)      float(0)       true   false   false    true   false   false
   float(0)       int(-1)        true   false   false    true   false   false
    int(1)        float(0)       true   false   false    true   false   false
   float(0)      str('01')      false    true    true   false   false   false
   str('1')       float(0)       true   false   false    true   false   false
  float(INF)      float(1)       true   false   false    true   false   false
   float(1)       int(-1)        true   false   false    true   false   false
   float(1)        int(0)        true   false   false    true   false   false
   float(1)      str("\0")       true   false   false    true   false   false
   str('')        float(1)      false    true    true   false   false   false
   float(1)       str('+')       true   false   false    true   false   false
   float(1)       str('-')       true   false   false    true   false   false
   float(1)       str('0')       true   false   false    true   false   false
   float(1)     str('false')     true   false   false    true   false   false
 str('text')      float(1)      false    true    true   false   false   false
 str('true')      float(1)      false    true    true   false   false   false
  float(INF)      int(-1)        true   false   false    true   false   false
  float(INF)       int(0)        true   false   false    true   false   false
  float(INF)       int(1)        true   false   false    true   false   false
  float(INF)     str("\0")       true   false   false    true   false   false
  float(INF)      str('')        true   false   false    true   false   false
  float(INF)      str('+')       true   false   false    true   false   false
  float(INF)      str('-')       true   false   false    true   false   false
  float(INF)      str('0')       true   false   false    true   false   false
  float(INF)     str('01')       true   false   false    true   false   false
  float(INF)      str('1')       true   false   false    true   false   false
  float(INF)    str('false')     true   false   false    true   false   false
  float(INF)    str('text')      true   false   false    true   false   false
  float(INF)    str('true')      true   false   false    true   false   false
    int(0)        int(-1)        true   false   false    true   false   false
    int(1)        int(-1)        true   false   false    true   false   false
  str("\0")       int(-1)        true   false   false    true   false   false
   str('')        int(-1)        true   false   false    true   false   false
   str('+')       int(-1)        true   false   false    true   false   false
   str('-')       int(-1)        true   false   false    true   false   false
   str('0')       int(-1)        true   false   false    true   false   false
   int(-1)       str('01')      false    true    true   false   false   false
   str('1')       int(-1)        true   false   false    true   false   false
 str('false')     int(-1)        true   false   false    true   false   false
 str('text')      int(-1)        true   false   false    true   false   false
 str('true')      int(-1)        true   false   false    true   false   false
    int(1)         int(0)        true   false   false    true   false   false
    int(0)       str('01')      false    true    true   false   false   false
   str('1')        int(0)        true   false   false    true   false   false
    int(1)       str("\0")       true   false   false    true   false   false
   str('')         int(1)       false    true    true   false   false   false
    int(1)        str('+')       true   false   false    true   false   false
    int(1)        str('-')       true   false   false    true   false   false
    int(1)        str('0')       true   false   false    true   false   false
    int(1)      str('false')     true   false   false    true   false   false
 str('text')       int(1)       false    true    true   false   false   false
 str('true')       int(1)       false    true    true   false   false   false
   str('')       str("\0")      false    true    true   false   false   false
   str('+')      str("\0")       true   false   false    true   false   false
   str('-')      str("\0")       true   false   false    true   false   false
  str("\0")       str('0')      false    true    true   false   false   false
  str("\0")      str('01')      false    true    true   false   false   false
   str('1')      str("\0")       true   false   false    true   false   false
 str('false')    str("\0")       true   false   false    true   false   false
 str('text')     str("\0")       true   false   false    true   false   false
 str('true')     str("\0")       true   false   false    true   false   false
   str('')        str('+')      false    true    true   false   false   false
   str('')        str('-')      false    true    true   false   false   false
   str('')        str('0')      false    true    true   false   false   false
   str('')       str('01')      false    true    true   false   false   false
   str('')        str('1')      false    true    true   false   false   false
   str('')      str('false')    false    true    true   false   false   false
   str('')      str('text')     false    true    true   false   false   false
   str('')      str('true')     false    true    true   false   false   false
   str('-')       str('+')       true   false   false    true   false   false
   str('+')       str('0')      false    true    true   false   false   false
   str('+')      str('01')      false    true    true   false   false   false
   str('1')       str('+')       true   false   false    true   false   false
 str('false')     str('+')       true   false   false    true   false   false
 str('text')      str('+')       true   false   false    true   false   false
 str('true')      str('+')       true   false   false    true   false   false
   str('-')       str('0')      false    true    true   false   false   false
   str('-')      str('01')      false    true    true   false   false   false
   str('1')       str('-')       true   false   false    true   false   false
 str('false')     str('-')       true   false   false    true   false   false
 str('text')      str('-')       true   false   false    true   false   false
 str('true')      str('-')       true   false   false    true   false   false
   str('0')      str('01')      false    true    true   false   false   false
   str('1')       str('0')       true   false   false    true   false   false
 str('false')     str('0')       true   false   false    true   false   false
 str('text')      str('0')       true   false   false    true   false   false
 str('true')      str('0')       true   false   false    true   false   false
 str('false')    str('01')       true   false   false    true   false   false
 str('text')     str('01')       true   false   false    true   false   false
 str('true')     str('01')       true   false   false    true   false   false
   str('1')     str('false')    false    true    true   false   false   false
 str('text')      str('1')       true   false   false    true   false   false
 str('true')      str('1')       true   false   false    true   false   false
 str('text')    str('false')     true   false   false    true   false   false
 str('true')    str('false')     true   false   false    true   false   false
 str('true')    str('text')      true   false   false    true   false   false

$a > $b > $c Rätsel wenn: $a ist nicht größer als $c .

A&ltC   : float(NAN)  &gt  str('a')   &gt   str('')
A&ltC   : float(NAN)  &gt  str('a')   &gt   str('1')
A&ltC   : float(NAN)  &gt  str('a')   &gt   str('A')
A&ltC   : float(NAN)  &gt  str('a')   &gt   str('0')
A&ltC   : float(NAN)  &gt  str('1')   &gt   str('')
A&ltC   : float(NAN)  &gt  str('1')   &gt   str('0')
A&ltC   : float(NAN)  &gt  str('A')   &gt   str('')
A&ltC   : float(NAN)  &gt  str('A')   &gt   str('1')
A&ltC   : float(NAN)  &gt  str('A')   &gt   str('0')
A&ltC   : float(NAN)  &gt  str('0')   &gt   str('')
A&ltC   :   str('')   &gt float(NAN)  &gt   str('a')
A&ltC   :   str('')   &gt float(NAN)  &gt   str('1')
A&ltC   :   str('')   &gt float(NAN)  &gt   str('A')
A&ltC   :   str('')   &gt float(NAN)  &gt   str('0')
A&ltC   :  str('a')   &gt   str('')   &gt  float(NAN)
A&ltC   :  str('a')   &gt  str('1')   &gt  float(NAN)
A&ltC   :  str('a')   &gt  str('A')   &gt  float(NAN)
A&ltC   :  str('a')   &gt  str('0')   &gt  float(NAN)
A&ltC   :  str('0')   &gt   str('')   &gt  float(NAN)
A==C  : bool(true)  &gt   str('')   &gt  float(NAN)
A==C  : bool(true)  &gt   str('')   &gt float(-INF)
A==C  : bool(true)  &gt   str('')   &gt   int(-1)
A==C  : bool(true)  &gt   str('')   &gt  float(-1)
A==C  : bool(true)  &gt   array()   &gt  float(NAN)
A==C  : bool(true)  &gt   array()   &gt  float(INF)
A==C  : bool(true)  &gt   array()   &gt float(-INF)
A==C  : bool(true)  &gt   array()   &gt   str('a')
A==C  : bool(true)  &gt   array()   &gt    int(1)
A==C  : bool(true)  &gt   array()   &gt   float(1)
A==C  : bool(true)  &gt   array()   &gt   str('1')
A==C  : bool(true)  &gt   array()   &gt   str('A')
A==C  : bool(true)  &gt   array()   &gt   int(-1)
A==C  : bool(true)  &gt   array()   &gt  float(-1)
A==C  : bool(true)  &gt   int(0)    &gt float(-INF)
A==C  : bool(true)  &gt   int(0)    &gt   int(-1)
A==C  : bool(true)  &gt   int(0)    &gt  float(-1)
A==C  : bool(true)  &gt  str('0')   &gt  float(NAN)
A==C  : bool(true)  &gt  str('0')   &gt float(-INF)
A==C  : bool(true)  &gt  str('0')   &gt   int(-1)
A==C  : bool(true)  &gt  str('0')   &gt  float(-1)
A==C  : bool(true)  &gt  float(0)   &gt float(-INF)
A==C  : bool(true)  &gt  float(0)   &gt   int(-1)
A==C  : bool(true)  &gt  float(0)   &gt  float(-1)
A==C  :   int(1)    &gt  str('a')   &gt   str('1')
A==C  :   int(1)    &gt  str('A')   &gt   str('1')
A==C  :  float(1)   &gt  str('a')   &gt   str('1')
A==C  :  float(1)   &gt  str('A')   &gt   str('1')
A==C  :  str('a')   &gt  str('1')   &gt    int(0)
A==C  :  str('a')   &gt  str('1')   &gt   float(0)
A==C  :   str('')   &gt float(-INF) &gt  NULL(NULL)
A==C  :   str('')   &gt float(-INF) &gt bool(false)
A==C  :   str('')   &gt   int(-1)   &gt  NULL(NULL)
A==C  :   str('')   &gt   int(-1)   &gt bool(false)
A==C  :   str('')   &gt  float(-1)  &gt  NULL(NULL)
A==C  :   str('')   &gt  float(-1)  &gt bool(false)
A==C  :   array()   &gt float(NAN)  &gt  NULL(NULL)
A==C  :   array()   &gt float(NAN)  &gt bool(false)
A==C  :   array()   &gt float(INF)  &gt  NULL(NULL)
A==C  :   array()   &gt float(INF)  &gt bool(false)
A==C  :   array()   &gt float(-INF) &gt  NULL(NULL)
A==C  :   array()   &gt float(-INF) &gt bool(false)
A==C  :   array()   &gt  str('a')   &gt  NULL(NULL)
A==C  :   array()   &gt  str('a')   &gt bool(false)
A==C  :   array()   &gt   int(1)    &gt  NULL(NULL)
A==C  :   array()   &gt   int(1)    &gt bool(false)
A==C  :   array()   &gt  float(1)   &gt  NULL(NULL)
A==C  :   array()   &gt  float(1)   &gt bool(false)
A==C  :   array()   &gt  str('1')   &gt  NULL(NULL)
A==C  :   array()   &gt  str('1')   &gt bool(false)
A==C  :   array()   &gt  str('A')   &gt  NULL(NULL)
A==C  :   array()   &gt  str('A')   &gt bool(false)
A==C  :   array()   &gt  str('0')   &gt  NULL(NULL)
A==C  :   array()   &gt   int(-1)   &gt  NULL(NULL)
A==C  :   array()   &gt   int(-1)   &gt bool(false)
A==C  :   array()   &gt  float(-1)  &gt  NULL(NULL)
A==C  :   array()   &gt  float(-1)  &gt bool(false)
A==C  :   str('')   &gt float(NAN)  &gt bool(false)
A==C  :   str('')   &gt float(NAN)  &gt  NULL(NULL)
A==C  :  str('A')   &gt  str('1')   &gt    int(0)
A==C  :  str('A')   &gt  str('1')   &gt   float(0)
A==C  :   int(0)    &gt float(-INF) &gt  NULL(NULL)
A==C  :   int(0)    &gt float(-INF) &gt bool(false)
A==C  :   int(0)    &gt   int(-1)   &gt  NULL(NULL)
A==C  :   int(0)    &gt   int(-1)   &gt bool(false)
A==C  :   int(0)    &gt  float(-1)  &gt  NULL(NULL)
A==C  :   int(0)    &gt  float(-1)  &gt bool(false)
A==C  :  str('0')   &gt float(NAN)  &gt bool(false)
A==C  :  str('0')   &gt float(-INF) &gt bool(false)
A==C  :  str('0')   &gt   int(-1)   &gt bool(false)
A==C  :  str('0')   &gt  float(-1)  &gt bool(false)
A==C  :  float(0)   &gt float(-INF) &gt  NULL(NULL)
A==C  :  float(0)   &gt float(-INF) &gt bool(false)
A==C  :  float(0)   &gt   int(-1)   &gt  NULL(NULL)
A==C  :  float(0)   &gt   int(-1)   &gt bool(false)
A==C  :  float(0)   &gt  float(-1)  &gt  NULL(NULL)
A==C  :  float(0)   &gt  float(-1)  &gt bool(false)
A===C :  str('0')   &gt float(NAN)  &gt   str('0')
A===C :   str('')   &gt float(NAN)  &gt   str('')
A===C :  str('a')   &gt float(NAN)  &gt   str('a')
A===C :  str('1')   &gt float(NAN)  &gt   str('1')
A===C :  str('A')   &gt float(NAN)  &gt   str('A')

Fun String Vergleich: 'Queen' > 'King' > 'Jack' > 'Ace'

Überprüfen Sie auch die PHP-Vergleichstabellen für Paare:

  • isset() und is_null()
  • if() und empty()
  • Boolean == vs. ===

Überprüfen Sie die Unterschiede zwischen PHP-Versionen live bei. http://3v4l.org/MAfDu .





ieee-754