Los operadores de comparación, como su nombre indica, le
permiten comparar dos valores. Puede que también se
encuentre interesado en consultar las
tablas de comparación de
tipos, ya que éstas muestran ejemplos de varios
tipos de comparaciones relacionadas con tipos.
Tabla 15-4. Operadores de Comparación
| Ejemplo | Nombre | Resultado |
|---|
| $a == $b | Igual | TRUE si $a es igual a $b. |
| $a === $b | Idéntico |
TRUE si $a es igual a $b, y son del mismo tipo. (A partir de
PHP 4)
|
| $a != $b | Diferente | TRUE si $a no es igual a $b. |
| $a <> $b | Diferente | TRUE si $a no es igual a $b. |
| $a !== $b | No idénticos |
TRUE si $a no es igual a $b, o si no son del mismo
tipo. (A partir de PHP 4)
|
| $a < $b | Menor que | TRUE si $a es escrictamente menor que $b. |
| $a > $b | Mayor que | TRUE si $a es estrictamente mayor que $b. |
| $a <= $b | Menor o igual que | TRUE si $a es menor o igual que $b. |
| $a >= $b | Mayor o igual que | TRUE si $a es mayor o igual que $b. |
Si compara un entero con una cadena, la cadena es convertida a un
número. Si compara dos cadenas numéricas,
ellas son comparadas como enteros. Estas reglas también se
aplican a la sentencia switch.
Para varios tipos, la comparación se realiza de acuerdo con
la siguient tabla (en orden).
Tabla 15-5. Comparación con Varios Tipos
| Tipo del Operando 1 | Tipo del Operando 2 | Resultado |
|---|
| null o string | string | Convertir NULL a "", comparación
numérica o de léxico |
| bool o null | cualquiera | Convertir a bool, FALSE <
TRUE |
| object | object |
Las clases internas pueden definir su propia
comparación, clases diferentes son incomparables, la
misma clase - comparan propiedades en la misma forma que las
matrices (PHP 4), PHP 5 tiene su propia explicación
|
| string, resource o number | string, resource o number | Traducir las cadenas y recursos a números,
matemática usual |
| array | array |
Una matriz con menos elementos es menor, si una clave del
operando 1 no se encuentra en el operando 2 entonces las
matrices son incomparables, de otra forma - comparar valor por
valor (vea el siguiente ejemplo)
|
| array | cualquiera | array es siempre mayor |
| object | cualquiera | object es siempre mayor |
Ejemplo 15-2. Transcripción de la comparación de matrices
estándar
<?php // Las matrices son comparadas de esta forma con los operadores de comparacion estandar function comparacion_matrices_estandar($op1, $op2) { if (count($op1) < count($op2)) { return -1; // $op1 < $op2 } elseif (count($op1) > count($op2)) { return 1; // $op1 > $op2 } foreach ($op1 as $clave => $val) { if (!array_key_exists($clave, $op2)) { return null; // incomparable } elseif ($val < $op2[$clave]) { return -1; } elseif ($val > $op2[$clave]) { return 1; } } return 0; // $op1 == $op2 } ?>
|
|
Vea también strcasecmp(),
strcmp(),
Operadores de
matriz, y la sección del manual sobre
Tipos.
Otro operador condicional es el operador "?:" (o ternario).
Ejemplo 15-3. Asignación de un valor predeterminado
<?php // Ejemplo de uso de: el Operador Ternario $accion = (empty($_POST['accion'])) ? 'predeterminada' : $_POST['accion'];
// La sentencia anterior es identica a este bloque if/else if (empty($_POST['accion'])) { $accion = 'predeterminada'; } else { $accion = $_POST['accion']; }
?>
|
|
La expresión
(expr1) ? (expr2) :
(expr3) evalúa a
expr2 si
expr1 evalúa a
TRUE, y
expr3 si
expr1 evalúa a
FALSE.
Nota:
Por favor note que el operador ternario es una sentencia, y que
no evalúa a una variable, sino al resultado de una
sentencia. Es importante saber esto si se desea devolver una
variable por referencia. La sentencia return $var == 42
? $a : $b; en una función con
retorno-por-referencia no funcionará por lo que se ha
mencionado y una advertencia es generada en versiones
posteriores de PHP.