Foros del Web » Programando para Internet » PHP »

Problema con array_merge

Estas en el tema de Problema con array_merge en el foro de PHP en Foros del Web. Estoy usando la funcion array_merge de la siguiente manera: Código PHP: $arreglo = array_merge ( $ctillarr , $areaarr , $puearr , $despuearr , $desestarr , ...
  #1 (permalink)  
Antiguo 23/01/2010, 13:25
 
Fecha de Ingreso: abril-2008
Mensajes: 67
Antigüedad: 16 años, 7 meses
Puntos: 0
Problema con array_merge

Estoy usando la funcion array_merge de la siguiente manera:

Código PHP:
$arreglo=array_merge($ctillarr,$areaarr,$puearr,$despuearr,$desestarr,$nomhabarr,$deshabarr,$consarr); 
Los valores de cada array ($ctillarr,$areaarr, etc) dentro de la funcion, los obtengo de consultas MYSQL a bases de datos.

El problema es que, cuando cualquier consulta no arroja ningun dato, array_merge devuelve un error, en el que dice que el array correspondiente a la consulta sin datos, no es un array, y no realiza su funcion.
Este es el error:
Código PHP:
Warningarray_merge() [function.array-merge]: Argument #1 is not an array in /home/trabajae/public_html/buscacv1resp.php on line 147 
Como puedo hacer para evitar esto?

Gracias.
  #2 (permalink)  
Antiguo 23/01/2010, 14:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problema con array_merge

Vas a tener que usar un control adecuado de errores, es decir, ir comprobando las variables que son array e irlas uniendo una a una usando array_merge.

Saludos.
  #3 (permalink)  
Antiguo 23/01/2010, 14:17
 
Fecha de Ingreso: abril-2008
Mensajes: 67
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con array_merge

Gracias gatorV.

Se me acaba de ocurrir algo.. no se si se podria hacer, es lo siguiente:

1.- Detectar si una consulta esta vacia con mysql_num_rows
2.- Si una consulta esta vacia, asignarle un valor arbitrario al array , para que no este vacio, pero el valor sea de tal manera que no falsee los datos de busqueda.

Luego comento a ver si funciona o no.

Saludos
  #4 (permalink)  
Antiguo 23/01/2010, 16:37
 
Fecha de Ingreso: abril-2008
Mensajes: 67
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema con array_merge

Si funciono. Ya no marca error cuando la consulta esta vacia.

Gracias
  #5 (permalink)  
Antiguo 25/03/2010, 18:27
 
Fecha de Ingreso: septiembre-2009
Mensajes: 7
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problema con array_merge

Bien a mi me paso algo parecido pero solo en PHP 5.x en PHP4 no me dio el problema.

Tengo tres array, los cuales pueden o no estar seteados, o sea si vienen valores quedan seteados sino los array no estan ni declarados.

Yo recupero valores del post que son checkbox y si vienen los mando a un array.

Código PHP:
Ver original
  1. while(list($Key,$Val)=each($_POST)){
  2.         if(substr($Key,0,7)=="Entity_")
  3.             $List1[] = substr($Key,7);
  4.         if(substr($Key,0,5)=="Base_")
  5.             $List2[] = substr($Key,5);
  6.         if(substr($Key,0,7)=="UserId_")
  7.             $List3[] = substr($Key,7);
  8. }

Ahora Para los dos primeros obtengo datos (los nombres de variables los cambie para no revelar datos).

Código PHP:
Ver original
  1. if(List1) // Si esta seteado
  2.     $Array1 = GetUsersIdByEntity(implode(",",$List1));
  3. if(List2) // Si esta seteado
  4.     $Array2 = GetUsersIdByEntity(implode(",",$List2));
Bien ahora $Array1, $Array2 y $List son Arrays que contienen Id de Usuarios, los dos primeros fueron obtenidos de una funcion pasandole como paramentro un string con Id de Entidades separadas por coma, de las cuales me retorna todos los Id de Usuarios para c/entidad.

Bien el caso ahora es que estos valores son dinámicos pues depende de los checbox que seleccione el usuario asi q cualquiera de los array puede venir vacio y ante la aucencia de uno de ellos PHP5.x me retorna NULL al unirlos con la función array_merge($Array1,$Array2,$List3).

Validar que Matriz se encuentra declarada y despues hacer la union es un método muy primitivo y lento (para mi), por lo q pense deve habar una soloción mas prolija al tema y efectivamente la hay.

En los lenguajes de programación existe algo que se llama casteo, el casteo lo que hace en simples terminos es decirle a una variable como deve de ser interpretada o sea si yo tnego una variable que es un string con un numero puedo decirle q se interprete como Int.

el casteo se hace poniendole el tipo de datos delante de la varibale de esta forma
Código PHP:
Ver original
  1. $NewValue = (tipo de dato) $variable;
  2.  
  3. $NewValue = (int) $Var="12";

Concretamente mi solución es la siguiente.
Código PHP:
Ver original
  1. $NewUserList  = array_merge((array)$Array1,(array)$Array2,(array)$List3);

Con esto la función array_merge de PHP interpretara cada elemento pasado a la funcion como un array, y si esta vacio no da error ni retorna NULL.


Espero haber dado una mano en algo!

Esteban Novo

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 12:06.