Foros del Web » Programando para Internet » PHP »

Invalid argument supplied for foreach()

Estas en el tema de Invalid argument supplied for foreach() en el foro de PHP en Foros del Web. hola, tengo una advertencia en el codigo que he hecho, el codigo lo que hace es leer un dato serializado con unos datos y obtener ...
  #1 (permalink)  
Antiguo 28/02/2013, 12:15
Avatar de ahaugas  
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 249
Antigüedad: 12 años, 8 meses
Puntos: 21
Exclamación Invalid argument supplied for foreach()

hola, tengo una advertencia en el codigo que he hecho, el codigo lo que hace es leer un dato serializado con unos datos y obtener el primer valor.

solo quiero obtener el primer valor por si hay varios datos.

Cita:
PHP Warning: Invalid argument supplied for foreach() in /var/www/vhosts/sitio.com/httpdocs/sitio/models/funcs.videos.php on line 42, referer: http://www.sitio.com/sitios.php
el codigo es:

Código PHP:
    //Simple function to get video
    
function get_video($video_uri)
    {
        
$data unserialize($video_uri);
        
$video = array();

        foreach(
$data as $key => $value)
        {
            
$video[] = $value
        } 

        return 
$video[0];
    } 
se le pasa el parametro serializado tipo a:1:{i:0;s:2:"13";} y obtiene el valor, en este caso es 13

alguna idea?
gracias
__________________
www.ahaugas.com mi pagina de desarrollo
  #2 (permalink)  
Antiguo 28/02/2013, 12:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Invalid argument supplied for foreach()

Pues los errores no mienten, si el mensaje te dice que no estás pasando un array entonces no lo estás haciendo bien.

Copiando el texto ya serializado y pasándolo por unserialize() funciona de maravilla, ejemplo.
https://ignite.io/code/512fa633ec221e097a000003

Igual te hace falta depurar un poco más, sería interesante ver exactamente que valor tiene $video_uri para ver que estás tratando de des-serializar.

¿Será que $video_uri es una URL en realidad?

Vaya, primero tendrías que leer el contenido de la URL y pasarlo, ya que unserialize() no funciona con URLs.

Si te queda alguna duda no olvides consultar el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/02/2013, 13:26
Avatar de ahaugas  
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 249
Antigüedad: 12 años, 8 meses
Puntos: 21
Respuesta: Invalid argument supplied for foreach()

no, solo es una id numerica que luego lo recupero haciendo la consulta a la db, lo serializo por si tengo mas de un dato pero solo con esta funcion necesito recuperar la primera ej:


Código PHP:
Ver original
  1. <?php
  2.     $lista = array('1', '44', '13');
  3.     $test = serialize($lista);
  4.  
  5.  
  6.     //Simple function to get video
  7.     function get_video($video_uri)
  8.     {
  9.         $data = unserialize($video_uri);
  10.         $video = array();
  11.  
  12.         foreach($data as $key => $value)
  13.         {
  14.             $video[] = $value;  
  15.         }  
  16.  
  17.         return $video['0'];
  18.     }
  19.  
  20.     echo get_video($test);
  21. ?>

en un principio funciona bien pero, basta que un dia no funcione porque no hice caso a la advertencia

no se....
__________________
www.ahaugas.com mi pagina de desarrollo

Etiquetas: invalid
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 13:35.