Foros del Web » Programando para Internet » PHP »

Dónde hago el error al consultar datos de un array con php?

Estas en el tema de Dónde hago el error al consultar datos de un array con php? en el foro de PHP en Foros del Web. Hola Buenas! Os comento. estoy trabajando con una API a la que le solicito datos que recibo en JSON. La parte de recibirlos está correcta ...
  #1 (permalink)  
Antiguo 04/07/2012, 04:49
 
Fecha de Ingreso: junio-2012
Ubicación: Catalunya
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Dónde hago el error al consultar datos de un array con php?

Hola Buenas!

Os comento. estoy trabajando con una API a la que le solicito datos que recibo en JSON. La parte de recibirlos está correcta y de hecho muchas funciones y consultas ya las tengo realizadas.

El problema lo tengo con algunos campos que deberian ser un array de varios indices pero me llegan como objeto. Por ejemplo:

Código:
	
array([0]stdClass Object(
     [drvrs] => stdClass Object ( 
	     [1] => stdClass Object ( 
	        [id] => 1 
		[n] => JAVI
		[c] => 050 
		[ds] => Programado
		[p] => +346 
		[r] => 1.76551724138 
		[ck] => 4951 
		                    ) 
	    [2] => stdClass Object ( 
	        [id] => 2 
		[n] => PABLO 
		[c] => w 
		[ds] => descrip! 
		[p] => +34909093 
		[r] => 0 
		[ck] => 6515       
		                    ) 
....
				  )

Bien, la consulta típica si no se considera un array y sabes que hay 2 seria algo tipo así:

Código:
$datoquequiero = var[0]->drvrs->1->nm   y me devolveria JAVI.
Ahora bien, como no se el numero de usuarios que me va a devolver, tengo que modificar esa parte y convertirla a un array, así que he hecho esto:
Código:
$usuarios = (array) var[0]->drvrs;

Con lo cual, consigo convertirlo a un array y entonces hago la consulta que tocaría hacer:

Código:
$datoquequiero = $usuarios[$i]->nm.

Esto debería devolverme el valor del campo del índice $i que haya hecho (con un bucle, etc..) PERO NO ES ASI.

En cambio si hago un print_r($usuarios); si que me muestra el array.

He revisado como 20 veces todo y no se me ocurre porque fallo.

Como os comentaba, esto solo me pasa con estos que primero me vienen como objeto y yo paso a array...he trabajado con otros array y perfecto!.

A ver si me podéis ayudar al respecto, estoy desesperado
  #2 (permalink)  
Antiguo 04/07/2012, 07:04
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Dónde hago el error al consultar datos de un array con php?

¿estas extrayendo desde base de datos?, hay formas dependiendo de la Liberia que uses obligar a que se devuelvan objetos o arrays, especifica el origen de los datos.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 04/07/2012, 11:35
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 10 meses
Puntos: 528
Respuesta: Dónde hago el error al consultar datos de un array con php?

Si tienes acceso al script que recibe el json y los decodifica, podrías decodificar haciendo que te pase el arreglo en vez del objeto:

$array=json_decode($json,true);

el true es para que te devuelva un arreglo asociativo.
  #4 (permalink)  
Antiguo 13/07/2012, 05:08
 
Fecha de Ingreso: junio-2012
Ubicación: Catalunya
Mensajes: 7
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Dónde hago el error al consultar datos de un array con php?

Hola!

Gracias por la respuestas.

El json_decode con el true lo aplico ya y de hecho las otras variables las recojo bien.

El tema está en que una parte de esas variables es un objeto con varios elementos en su interior (deberia ser un array creo yo, no?) y cuando quiero recoger sus datos soy incapaz!

Lo paso a array así:

$array = (array) $datos;

y entonces trato de hacer un bucle con $array[i]->variable

Pero ni esas.

No se si podéis ayudarme.

Etiquetas: consultar, usuarios
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 07:50.