Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Vergleichsoperatoren

PHP-Vergleichsoperatoren

伊谢尔伦
伊谢尔伦Original
2016-11-24 13:30:501221Durchsuche

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.

Seit PHP 5.3 kann der mittlere Teil des ternären Operators weggelassen werden. Der Ausdruck expr1 ?: expr3 gibt expr1 zurück, wenn expr1 TRUE ergibt, andernfalls expr3.

Hinweis: Beachten Sie, dass der ternäre Operator eine Anweisung ist, seine Auswertung also keine Variable, sondern das Ergebnis der Anweisung ist. Dies ist wichtig, wenn Sie eine Variable per Referenz zurückgeben möchten. Die Anweisung return $var == 42 ? $a : $b; in einer Funktion, die per Referenz zurückgibt, wird nicht funktionieren und eine zukünftige Version von PHP wird eine Warnung darüber ausgeben.

Hinweis:

Es wird empfohlen, das Stapeln ternärer Operatoren zu vermeiden. Wenn mehrere ternäre Operatoren in einer Anweisung verwendet werden, ist das Ergebnis der PHP-Operation unklar:
<?php
 // Example usage for: Ternary Operator
 $action = (empty($_POST[&#39;action&#39;])) ? &#39;default&#39; : $_POST[&#39;action&#39;];
 // The above is identical to this if/else statement
 if (empty($_POST[&#39;action&#39;])) {
     $action = &#39;default&#39;;
 } else {
     $action = $_POST[&#39;action&#39;];
 }
 ?>

Beispiel Nr. 3 Unklares Verhalten ternärer Operatoren

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-FehlerkontrolloperatorNächster Artikel:PHP-Fehlerkontrolloperator