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.
Impresionante, gracias. Hay un temporizador estúpido, así que no puedo aceptarlo por otros 5 minutos. – yellottyellott