Heim > Artikel > Backend-Entwicklung > PHP-Vergleichsoperatoren
Vergleichsoperatoren ermöglichen, wie der Name schon sagt, den Vergleich zweier Werte.
Vergleichsoperator
Beispiel 🎜>$a == $b ist gleich TRUE, wenn $a nach der Typkonvertierung gleich $b ist. $a === $b Kongruent WAHR, wenn $a gleich $b ist und ihre Typen gleich sind. $a != $b Nicht gleich WAHR, wenn $a nach der Typkonvertierung nicht gleich $b ist.
$a a8093152e673feb7aba1828c43532094 $b ist nicht gleich TRUE, wenn $a nach der Typkonvertierung nicht gleich $b ist.
$a !== $b Nicht kongruent WAHR, wenn $a nicht gleich $b ist oder sie von unterschiedlichem Typ sind.
$a 82c74230d1fd1c08315802515c42fc73 $b ist größer als WAHR, wenn $a strikt größer als $b ist.
$a 7ccedae5af7e3d7c0ddc7a7cbe0cf8f5= $b ist größer oder gleich TRUE, wenn $a größer oder gleich $b ist.
Beim Vergleich einer Zahl und einer Zeichenfolge oder beim Vergleich von Zeichenfolgen mit numerischem Inhalt wird die Zeichenfolge in einen numerischen Wert umgewandelt und der Vergleich wird als numerischer Wert durchgeführt. Diese Regel gilt auch für switch-Anweisungen. Beim Vergleich mit === oder !== wird keine Typkonvertierung durchgeführt, da sowohl Typen als auch Werte verglichen werden.
Bei mehreren Typen vergleichen die Vergleichsoperatoren gemäß der folgenden Tabelle (in der Reihenfolge). Mehrere Typen vergleichen Operand 1 Typ<?php var_dump(0 == "a"); // 0 == 0 -> true var_dump("1" == "01"); // 1 == 1 -> true var_dump("10" == "1e1"); // 10 == 10 -> true var_dump(100 == "1e2"); // 100 == 100 -> true switch ("a") { case 0: echo "0"; break; case "a": // never reached because "a" is already matched with 0 echo "a"; break; } ?>
Operand 2 Typ
Ergebnis
null oder string string Konvertieren Sie NULL in „“ für numerische oder lexikalische Vergleiche
bool oder null jeder andere Typ. Konvertieren Sie in bool, FALSE <
Objekt, das von integrierten Klassen definiert werden kann ihre eigenen Vergleiche, verschiedene Klassen können nicht verglichen werden, Eigenschaften derselben Klasse und Arrays werden auf die gleiche Weise verglichen (PHP 4), PHP 5 hat seine eigenen Anweisungen
String, Ressource oder Zahlenzeichenfolge, Ressource oder Zahl werden Zeichenfolgen und Ressourcen werden nach gewöhnlicher Mathematik in Zahlen umgewandelt und verglichen. Array-Arrays mit weniger Mitgliedern sind kleiner. Wenn der Schlüssel in Operand 1 nicht in Operand 2 vorhanden ist, können die Arrays nicht verglichen werden wird einzeln verglichen.
Objekt Jedes andere Typobjekt ist immer größer
Array Jedes andere Typarray ist immer größer
Beispiel # 1 Standard-Array-Vergleichscode
Warnung: Aufgrund der internen Darstellung von Gleitkommazahlen float sollten zwei Gleitkommazahlen nicht auf Gleichheit verglichen werden.Ternärer Operator
Ein weiterer bedingter Operator ist der „?:“ (oder ternärer) Operator.
<?php // 数组是用标准比较运算符这样比较的 function standard_array_compare($op1, $op2) { if (count($op1) < count($op2)) { return -1; // $op1 < $op2 } elseif (count($op1) > count($op2)) { return 1; // $op1 > $op2 } foreach ($op1 as $key => $val) { if (!array_key_exists($key, $op2)) { return null; // uncomparable } elseif ($val < $op2[$key]) { return -1; } elseif ($val > $op2[$key]) { return 1; } } return 0; // $op1 == $op2 } ?>Beispiel #2 Standardwert zuweisen
Ausdruck (Ausdruck1) ? (Ausdruck2) : (Ausdruck3) Wenn Ausdruck1 als TRUE ausgewertet wird, ist der Wert Ausdruck2, und wenn Ausdruck1 ausgewertet wird, Ausdruck2 Der Wert bei FALSE ist expr3.
<?php // Example usage for: Ternary Operator $action = (empty($_POST['action'])) ? 'default' : $_POST['action']; // The above is identical to this if/else statement if (empty($_POST['action'])) { $action = 'default'; } else { $action = $_POST['action']; } ?>
Beispiel Nr. 3 Unklares Verhalten ternärer Operatoren