The 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.
1)
$a > $b Greater than: If $a is strictly greater than $b, TRUE is returned2)
$a Less than: If $a is strictly less than $b, return TRUE3)
$a >= $b Greater than or equal to: If $a is greater than or equal to $b, return TRUE4)
$a Less than or equal to: If $a is less than or equal to $b, Then return TRUE5)
$a $b is not equal to: If $a is not equal to $b, then return TRUE6)
$a != $b Not equal to: If $a is not equal to $b, return TRUE (same as above) 7)
$a == $b Equals: If $a equals $b, then returns TRUE8)
$a === $b All equals: If $a equals $b, and they The types are also the same, then TRUE is returned9)
$a !== $b is not equal to: If $a is not equal to $b, or their types are different, Return TRUE
Among them, we need to focus on distinguishing between "equal to" and "equal to". $a == $b only compares the values of two variables, and equal to both sides of the operator. The expression compares values and data types at the same time. Only when the values on both sides are equal, the operation result 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.
For example:
var_dump(0 == "a"); // Return TRUE, "a" is converted to 0
var_dump("1" == "01"); // Return TRUE, Treat as an integer
Comparison between string or null and string: Convert NULL 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 be compared, and properties of the same class are compared
Comparison between strings, resources or numbers: Convert strings and resources into numbers, and compare them according to ordinary mathematics
array Comparison between: Arrays with fewer members are smaller. If the key in operand 1 does not exist in operand 2, the arrays cannot be compared and need to be compared value by value (see the following code)
array and any other type Comparison: array is always larger
Compare 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 }
The above is the detailed content of Parsing PHP comparison operators and logical operators. For more information, please follow other related articles on the PHP Chinese website!