Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Duda con PHP y JSON
#1
Buenas, lo que me gustaria conseguir es que de este archivo http://api.imgur.com/2/album/vhjnA.json extraer los enlaces "original" de cada imagen, y meterlos en un array, para mas tarde hacer un random y que coja un enlace del array para usarlo de cabecera.


Código PHP:
$json file_get_contents("http://api.imgur.com/2/album/vhjnA.json");
$resp json_decode($jsontrue);
$album $resp->album;
$images $album->images;

foreach(
$images as $img) {
 
   $original $img->links->original;
}

$max sizeof($original);
$random rand(0,$max);
$header var_dump($array[$random]); 


Ese es el codigo que he conseguido sacar, pero me devuelve el siguiente error:

Warning: Invalid argument supplied for foreach() in ../functions.php on line 347
#2
Sería bueno ver todo el código para ver la linea 347 en donde no se esta aceptando el código que estas introduciendo, al menos para darme una vaga idea y ver si puedo ayudarte, saludos.
#3
Bueno, me indica que el error esta en el foreach de mi codigo. Ya que estoy tratando de implementarlo en las funciones de wordpress.

Pero si realmente hace falta, mas tarde cuando llege a casa lo adjunto.
#4
Prueba con éste código:

Código PHP:
$json file_get_contents("http://api.imgur.com/2/album/vhjnA.json");
$resp json_decode($jsontrue);
$album $resp['album'];
$images $album['images'];
$original = [];
foreach(
$images as $img
{
    
$links $img['links'];
    
array_push($original$links['original']);
}
$max sizeof($original);
$random rand(0,($max-1));
echo 
'random: '.$random;
echo 
'valor link: '.$original[$random]; 

Espero te funcione.

Saludos!
WWW
#5
Vaya, al final he podido resolverlo de otra manera:

Código PHP:
function get_header_imgur(){
$json file_get_contents("http://api.imgur.com/2/album/vhjnA.json");
$jsondec json_decode($json);
$images $jsondec->album->images;
$cnt 0;
$original = array();
foreach (
$images as $img){
    
$original[$cnt] = $img->links->original;
    
$cnt++;
}
$rng rand(0,$cnt-1);

return 
$original[$rng];


Esa es la función que he conseguido hacer para el Wordpress. Gracias Garcon y Jebcalix.
Si he entendido bien como funciona Json y PHP, la version de Jebcalix tambien creo que funcionaria.

Lo del array_push es para insertar a continuacion de la ultima? Si es cierto me puedo ahorrar el contador.
#6
Así es, te inserta un elemento al final del array, así te ahorras el contador de tu foreach.
WWW
#7
^^ Gracias, pues hare ese cambio.

Una ultima pregunta antes de marcar como solucionado el tema.
En php para acceder a un array de un array. He visto estas dos formas:

Código:
$original[$cnt] = $img->links->original

Código:
$album = $resp['album'];
$images = $album['images'];

Que diferencia hay? O cual es la mejor forma para acceder?
#8
(30-09-2015, 12:32 PM)Sugoi escribió: ^^ Gracias, pues hare ese cambio.

Una ultima pregunta antes de marcar como solucionado el tema.
En php para acceder a un array de un array. He visto estas dos formas:

Código:
$original[$cnt] = $img->links->original

Código:
$album = $resp['album'];
$images = $album['images'];

Que diferencia hay? O cual es la mejor forma para acceder?

Siempre, cuanto mas reducido sea un codigo, menos problemas te dara y mejor lo entenderas y tendras organizado, yo veo mas eficiente la primera manera Cansado
#9
(30-09-2015, 04:52 PM)YamaT escribió:
(30-09-2015, 12:32 PM)Sugoi escribió: ^^ Gracias, pues hare ese cambio.

Una ultima pregunta antes de marcar como solucionado el tema.
En php para acceder a un array de un array. He visto estas dos formas:

Código:
$original[$cnt] = $img->links->original

Código:
$album = $resp['album'];
$images = $album['images'];

Que diferencia hay? O cual es la mejor forma para acceder?

Siempre, cuanto mas reducido sea un codigo, menos problemas te dara y mejor lo entenderas y tendras organizado, yo veo mas eficiente la primera manera  Cansado

A ver, eso si que lo se. Me referia a que si hay alguna diferencia en cuanto a funcionamiento interno. Osea la primera funciona con -> y la segunda con ['clave']. Si eso tiene algo diferente o son lo mismo representado de 2 formas distintas.
#10
la unica diferencia es que si usas -> es orientado a objetos. o sea, usas un atributo de la clase... pero en terminos prácticos es lo mismo.


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  duda.. Roby 1 288 30-12-2016, 09:03 PM
Último mensaje: garcon
  [Duda] Conectar a Mysql zapikero 5 657 25-01-2015, 04:11 PM
Último mensaje: avdarie
  [Duda] Abrir enlace al dar click en cualquier sitio Tamatsipatse 1 497 22-11-2014, 08:26 PM
Último mensaje: AbaddonOrmuz
  Duda sobre HTTPS othgeg 6 519 07-11-2014, 07:28 AM
Último mensaje: othgeg
Pregunta Duda pagina web othgeg 10 1,088 19-08-2014, 03:19 AM
Último mensaje: Samo30
  Iniciacion a JSON Eru Roraito 3 414 12-05-2014, 10:23 PM
Último mensaje: darklion93
Pregunta Duda con fotos de web en navegador de celulares othgeg 9 659 12-05-2014, 02:37 PM
Último mensaje: othgeg
  Duda htaccess bseca 9 953 01-01-2014, 04:24 PM
Último mensaje: Gonzalo
  [Duda] Mod Hangman problema stylesheet.css forsa 3 623 12-08-2013, 06:30 PM
Último mensaje: forsa
  Duda : Scrip de alojamiento de archivos mymusiic 6 627 17-07-2013, 08:51 PM
Último mensaje: papi



Usuarios navegando en este tema: 1 invitado(s)