An operator is a symbol that tells the compiler to perform a specific arithmetic or logical operation. It usually forms an expression together with the operands. We often see it participating in mathematical operations or logical operations. PHP also contains many operators. This article explains in detail the very important comparison operators.
Comparison operator types
As their name implies, allow comparison of two values. The comparison operators are as follows:
1) $a > $b is greater than: if $a is strictly greater than $b, then TRUE is returned
2) $a 3) $a >= $b Greater than or equal to: If $a is greater than or equal to $b, return TRUE
4) $a 5) $a $b is not equal to: if $a is not equal to $b, return TRUE
6) $a != $b is not equal to: if $a is not equal to $b, return TRUE (same as above )
7) $a == $b is equal to: If $a is equal to $b, return TRUE
8) $a === $b is equal to: if $a is equal to $b, and their types are also the same, then Return TRUE
9) $a !== $b is not equal to: If $a is not equal to $b, or their types are different, then TRUE is returned
Among them, we need to focus on distinguishing between "equal to" and "all equal to", $a == $b only performs a comparison operation on the values of the two variables, while equality requires comparing the values and data types of the expressions on both sides of the operator at the same time. Only when the values on both sides are equal, the operation result will be is true". Combined with the "inequality" operator, for example, $a = 2; var_dump($a!==2); this expression returns "false" because 2 is equal to 2. In addition, $a = 2; is an integer type and 2 in var_dump($a!==2); is also an integer type, but the operator is not exactly equal to "!==", so the result is false, because 2 is equal to 2 . On the other hand, if this is the case $a = 2; var_dump($a!=='2'); the result of the operation is "true", because 2 is not equal to '2', and the following '2' is a string of '2' ', that is, not all equals not only compare the variable values, but also compare the data types of the variables.
Comparing results of different types in PHP
If the PHP comparison operator compares an integer and a string, the string will be converted to an integer and then compared. If you compare two numeric strings, they are compared as integers, and this rule also applies to switch statements.
For example:
var_dump(0 == "a"); // Return TRUE, "a" is converted to 0
var_dump("1" == "01"); // Return TRUE, treated as an integer
string Or comparison between null and string: Convert NULL to "" to compare numbers or strings
Comparison between bool or null: Convert to bool, FALSE Object built-in classes can define their own comparisons, different classes cannot Comparison, if the same class compares attributes
Comparison between string, resource or number: Convert strings and resources into numbers, compare according to ordinary mathematics
Comparison between arrays: Arrays with fewer members are smaller, if the operand 1 is in The key does not exist in operand 2, so the arrays cannot be compared and need to be compared value by value (see the following code)
Comparing array with any other type: array is always larger
Comparing object with any other type: object is always larger
Array comparison code:
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; } else if ($val < $op2[$key]) { return -1; } elseif ($val > $op2[$key]) { return 1; } } return 0; // $op1 == $op2 }
Ternary operator in comparison operator:
Expression (expr1) ? (expr2) : (expr3) When the value of expression expr1 is TRUE, the value is expr2, when The expression expr1 evaluates to FALSE when it evaluates to expr3.