Foros del Web » Programando para Internet » PHP »

Recuperar valor sin foreach!

Estas en el tema de Recuperar valor sin foreach! en el foro de PHP en Foros del Web. Tengo un array llamado $mi_array, que se ve así: Código PHP: Array (     [ 0 ] =>  stdClass Object  (         [ elements ] =>             [ 9285f221 - 05b2 - ...
  #1 (permalink)  
Antiguo 05/12/2016, 17:42
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 9 meses
Puntos: 22
Recuperar valor sin foreach!

Tengo un array llamado $mi_array, que se ve así:
Código PHP:
Array (
    [
0] => stdClass Object (
        [
elements] =>
            [
9285f221-05b2-4cf1-8063-08b13f0c0104] => stdClass Object (
                [
0] => stdClass Object (
                    [
file] => /imagenes/1.jpg
                    
[width] => 570
                    
[height] => 32 
Ahora, simple y llanamente quiero imprimir el valor de file, o sea: /imagenes/1.jpg Para ello podemos hacer esto, lo cual funciona bien:
Código PHP:
foreach ($mi_array as $objeto) {
    if (
$objeto->elements) {

        
$elements_en_array json_decode($objeto->elements);

        foreach (
$elements_en_array as $key1 => $value1) {
            if (
$key1 == "9285f221-05b2-4cf1-8063-08b13f0c0104") {
                foreach (
$value1 as $value2) {
                    echo 
$value2->file;
                    break(
2);
                }
            }
        }
    }

Pero qué tal que queremos saltarnos el 3er foreach, y hacer algo como esto, que evidentemente no funciona:
Código PHP:
foreach ($mi_array as $objeto) {
    if (
$objeto->elements) {

        
$elements_en_array json_decode($objeto->elements);

        foreach (
$elements_en_array as $key1 => $value1) {
            echo 
$key1["9285f221-05b2-4cf1-8063-08b13f0c0104"]->$value1->file;
        }
    }


¿Me ayudan un poco?
Saludos

  #2 (permalink)  
Antiguo 06/12/2016, 00:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Recuperar valor sin foreach!

No funciona porque intentas acceder al objeto desde la variable del índice y no la del objeto. Recuerda que $key1 representa al índice. Es más, utilizas esa variable en la condición para averiguar si se trata del índice que buscas.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 29/03/2017, 21:45
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 9 meses
Puntos: 22
De acuerdo Respuesta: Recuperar valor sin foreach!

Hola maestro, cuánto tiempo!

Recién voy viendo este post que abrí hace rato. Tienes toda la razón, $key es el propio 9285f221-05b2-4cf1-8063-08b13f0c0104, así que nunca funcionaría como decía.

Pero funcionaría esto:
Código PHP:
echo $elements_en_array["9285f221-05b2-4cf1-8063-08b13f0c0104"]->$value1->file
Y con ello nos ahorramos dos foreach, quedándonos sólo con uno, según veo ahora.

Aunque quiero recordar que en su momento yo no tenía ni idea de cómo recuperar nada directo de un objeto, sino solamente de un array, y de ahí se me complicaba más las cosas. Pero esa piedra fue ya superada, así que nos podemos evitar el json_decode, creo que iría así:
Código PHP:
echo $objeto->elements->{"9285f221-05b2-4cf1-8063-08b13f0c0104"}->$value1->file

Saludos!

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:07.