2012-07-31 16 views

Respuesta

28

in_array() hace sueltos comparaciones ($a == $b) a menos que pase TRUE al tercer argumento, en cuyo caso se hace estrictas comparaciones ($a === $b).

Semánticamente, in_array($obj, $arr) es idéntica a ésta:

foreach ($arr as &$member) { 
    if ($member == $obj) { 
    return TRUE; 
    } 
} 
return FALSE; 

... in_array($obj, $arr, TRUE) y es idéntica a ésta:

foreach ($arr as &$member) { 
    if ($member === $obj) { 
    return TRUE; 
    } 
} 
return FALSE; 

... y citar el manual sobre lo que esto comprueba realidad:

Al usar el operador de comparación (==), las variables del objeto son compa rojo de una manera simple, a saber: dos instancias de objeto son iguales si tienen los mismos atributos y valores, y son instancias de la misma clase.

Por otro lado, cuando se utiliza el operador de identidad (===), las variables de objeto son idénticas si y solo si se refieren a la misma instancia de la misma clase.

+1

Impresionante, gracias. Hay un temporizador estúpido, así que no puedo aceptarlo por otros 5 minutos. – yellottyellott

0

Los objetos son siempre referencias en PHP 5+ y solo se pueden copiar (creando así un nuevo objeto) utilizando clone.

Eso significa que debe poder usar in_array().

Cuestiones relacionadas