2009-07-13 1322 views
42

Me he dado cuenta de que alguien usa el operador PHP ===, lo que no puedo entender. Lo he intentado con una función, y corresponde de una manera loca.¿Qué significa "==="?

¿Cuál es la definición de este operador? Ni siquiera puedo encontrarlo en la declaración de los operadores PHP.

+24

FYI, no se puede google '===': http://www.google.com.au/search? q ==== – glasnt

+3

pero un poco más de información para google te ayudará: ht tp: //www.google.com.sg/search? hl = es & q =% 3D% 3D% operador 3D + php + & btnG = Google + Buscar & meta = & aq = f & oq = – beggs

+0

@TomatoSandwich: ¿Qué tal esto? - http: // www .google.com/search? q = three + equal + signs + php =) – xk0der

Respuesta

60
$a === $b  (Identical)  

TRUE si $a es igual a $b, y son del mismo tipo. (Introducido en PHP 4)

PHP Docs

+3

Como nota, este operador de igualdad también aparece en Javascript y creo que Perl. Es bastante común. –

+12

También tenga en cuenta que == también se conoce como el operador "permite ver lo que puedo hacer de esto", ya que da como resultado perlas como "100" == "1e2" y 0 == "uno". –

+1

Sin saber mucho sobre PHP, entiendo 100 = 1e2 (10 * 10^2) pero no entiendo el "0" == "uno"? ¿Alguien me puede explicar esto? – Ksempac

3

Los iguales triples firman === comprobaciones para ver si dos variables son iguales y del mismo tipo.

12

Usted puede leer here, breve resumen:

$ a == $ b Igualdad TRUE si $ a es igual a $ b después del tipo de malabarismo.

$ a === $ b Idéntico TRUE si $ a es igual a $ b, y son del mismo tipo.

+0

Me siento bastante estúpido ahora, que lo encontraste tan rápido, traté de googlearlo sin mucho éxito ... Gracias a todos de todos modos. –

+2

en php.net tiene respuestas sobre el 99% de su pregunta al respecto. –

50

http://www.php.net/ternary

$ a == $ b Igualdad TRUE si $ a es igual a $ b, excepto para (True == -1) que todavía es True.

$ a === $ b Idéntico TRUE si $ a es igual a $ b, y son del mismo tipo.

> "5" == 5; 
True 
> "5" === 5; 
False 
+0

No es cierto. Los tres signos iguales devuelven falso si $ a y $ b son objetos de la misma clase y tienen los mismos valores para todas sus propiedades (respectivas).Pruébelo usted mismo: clase FirstClass { public $ a; public $ b; \t function FirstClass() { \t \t $ this -> a = 1; \t \t $ this -> b = 1; \t} } $ first = new FirstClass(); $ second = new FirstClass(); if ($ first === $ second) { \t echo "triple equal!"; \t } else { \t echo "triple no igual!"; } –

+0

Dykam, exactamente mi punto, pero no estoy comparando nada. Solo digo que en el caso de los objetos, no es el VALOR que se compara a través de ===, sino la referencia real. ES DECIR. pueden ser completamente los mismos objetos, es decir, con todos los mismos valores, pero aún === muestra falso, porque no son la misma referencia. –

+0

Has dicho: $ a === $ b Idéntico TRUE si $ a es igual a $ b, y son del mismo tipo. Simplemente digo que esto no es verdad en absoluto. Punto final. –

1

Ver Double and Triple equals operator in PHP que me dieron por googlear en "PHP tres es igual operador".

En un momento se dice que:

Un doble signo = es una comparación y comprueba si la variable/expresión/constante a la izquierda tiene el mismo valor que la variable/expresión/constante a la derecha .

Un triple = sign es una comparación para ver si dos variables/expresiones/constantes son iguales Y tienen el mismo tipo, es decir, ambas son cadenas o ambas son números enteros.

También da un ejemplo para explicarlo.

1

Para PHP, hay muchos significados diferentes a cero se puede tomar

  1. Puede ser un valor booleano falso
  2. Podría ser un valor nulo
  3. Realmente podría ser un cero

Entonces === se agrega para garantizar que el tipo y el valor sean los mismos.

9

En PHP puede comparar dos valores utilizando el operador == o el operador ===. La diferencia es la siguiente:

PHP es un lenguaje dinámico e interpretado que no es estricto en los tipos de datos. Significa que el lenguaje en sí intentará convertir tipos de datos, siempre que sea necesario.

echo 4 + "2"; // output is 6 

La salida es un valor entero 6, porque + es el operador de suma numérica en PHP, por lo que si usted proporciona operandos con otros tipos de datos a la misma, PHP primero de ellos se convertirá en su tipo apropiado ("2" ser convertido a 2) y luego realizar la operación.

Si utiliza == como operador de comparación con dos operandos que pueden estar en diferentes tipos de datos, PHP convertirá el segundo tipo de operando, en el primero. Por lo tanto:

== 4 "4" // verdadera

PHP convierte en "4" a 4, y luego compara los valores. En este caso, el resultado será verdadero.

Si utiliza === como el operador de comparación, PHP no intentará convertir ningún tipo de datos. Entonces, si los tipos de operandos son diferentes, entonces NO son idénticos.

4 === "4" // false

0

"===" que coincide con el valor en la variable así como el tipo de datos de la variable.

4

Verá este operador en muchos idiomas escritos dinámicamente, no solo en PHP.

== intentará convertir lo que sea que esté tratando en tipos que pueda comparar.

=== comparará estrictamente el tipo y el valor.

En cualquier lenguaje de tipado dinámico, debe tener cuidado con ==, puede obtener algunos errores interesantes.

El ternario === es menos conveniente, pero es más seguro.Para las comparaciones siempre hay que pensar un poco adicional a si debe ser === o ==

6

$x == $y es VERDADERO si el valor del $ xy $ y son los mismos:

$x = 1; //int type 
$y = "1"; //string type 
if ($x == $y) { 
    // This will execute 
} 

$x === $y TRUE si el valor de los $ x y $ y son los mismos y el tipo de $ x y $ y son los mismos:

$x = 1; //int type 
$y = "1"; //string type 
if ($x === $y) { 
    // This will not execute 
}