Foros del Web » Programando para Internet » PHP »

Error con array en in_array()

Estas en el tema de Error con array en in_array() en el foro de PHP en Foros del Web. Bueno llevo desde ayer noche intentando depurar este pequeño error... resulta que al principio pensaba que me confundia un 0 con un -1 y tiraba ...
  #1 (permalink)  
Antiguo 10/02/2010, 13:28
N4X
 
Fecha de Ingreso: enero-2010
Mensajes: 23
Antigüedad: 14 años, 10 meses
Puntos: 0
Error con array en in_array()

Bueno llevo desde ayer noche intentando depurar este pequeño error...

resulta que al principio pensaba que me confundia un 0 con un -1 y tiraba error..

arreglado ese error no me comparaba el 0 con 0 y se saltaba esa comprobación...

al final llevé esta función (in_array) a su mínima expresión y me doy cuenta del error:

Código PHP:
<?php

if (in_array(array(0,2), array(0,2,3,4,-1))) 
    die();
    
echo 
"ok";

if (
in_array(0,array(0,2,3,4,-1)))
    die();
    
echo 
"ok2";
?>
el script muestra ok.
cuando en teoria no deberia verse nada... proque según php.net:

Cita:
4.2.0 needle may now be an array.


es decir.. si a partir de la versión 4.2 puedo meter un array porque rallos no funciona con un array?

y si... mi versión está por encima

Código:
PHP/5.3.0
saludos
nax
  #2 (permalink)  
Antiguo 10/02/2010, 13:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Error con array en in_array()

Es que si revisas en los ejemplos del manual. El propósito de que needle pueda ser un array no es dar varias opciones de búsqueda. Tampoco para saber si los elementos del array se encuentran en haystack. Cuando especificas un array en el primer parámetro, se busca un array con esos mismos elementos en el haystack. Un ejemplo:
Código PHP:
Ver original
  1. $a = array('a', 'b', 'c', array('d', 'e'));
  2. if (in_array(array('a', 'b'), $a)) {
  3.     echo 'in_array()... TRUE';
  4. } else {
  5.     echo 'in_array()... FALSE';
  6. }
  7. if (in_array(array('d', 'e'), $a)) {
  8.     echo 'in_array()... TRUE';
  9. } else {
  10.     echo 'in_array()... FALSE';
  11. }
La salida será:
Cita:
in_array()... FALSE
in_array()... TRUE
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 10/02/2010, 13:40
 
Fecha de Ingreso: agosto-2007
Mensajes: 66
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Error con array en in_array()

si no pones llaves despues del if solo ejecuta la primer linea, asi que es error de lógica tuya, en este caso cuando es verdadero el if se ejecuta el die(); y las siguientes lineas se ejecutan independientemente del resultado,

espero haberme explicado saludos
  #4 (permalink)  
Antiguo 10/02/2010, 13:48
N4X
 
Fecha de Ingreso: enero-2010
Mensajes: 23
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Error con array en in_array()

@david: entiendo.. así que la búsqueda es de arrays identicos y no de el contenido del array...

tendré que igeniarmelas con otra.. aunque así me gustaba como quedaba. gracias de todas formas.

@grupo-iguanas: en este caso el error es de conocimientos tuyos porque die(); es igual que exit(); y lo que hace es dejar de ejecutar el script...
sino como explica tu lógica que el primer echo se muestre y el 2ndo no?

gracias por la ayuda

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:09.