Foros del Web » Programando para Internet » PHP »

Recorrer array dentro de otro array con key

Estas en el tema de Recorrer array dentro de otro array con key en el foro de PHP en Foros del Web. Hola Forer@s ! Es un gusto saludarles, y poder andar acá de nuevo, con una cuestión que me ha resultado un tanto confusa ya jej. ...
  #1 (permalink)  
Antiguo 17/04/2017, 16:56
 
Fecha de Ingreso: julio-2015
Ubicación: Distrito Federal
Mensajes: 97
Antigüedad: 8 años, 9 meses
Puntos: 2
Recorrer array dentro de otro array con key

Hola Forer@s!

Es un gusto saludarles, y poder andar acá de nuevo, con una cuestión que me ha resultado un tanto confusa ya jej.

Lo que sucede es que tengo un array de otro array, de esta forma:
Código PHP:
Ver original
  1. $vars = array(
  2.         'SQL' => array(
  3.             '_SERVER' => 'localhost'
  4.         ),
  5.         'WEB' => array(
  6.             '_TITLE' => 'Prueba'
  7.         )
  8.     );

Lo que quiero hacer es poder recorrer esto para poder obtener al final el valor de cada key. Osea obtener el valor de _TITLE. No se si sea la forma correcta de explicarlo.

Estuve intentandolo con dos foreach de esta forma:
Código PHP:
Ver original
  1. foreach($vars as $clave1){
  2.         foreach($clave1 as $valor => $contenido){
  3.                         echo $clave1.$valor ,' contiene: ', $contenido;
  4.                         // quisiera que me mostrase algo como
  5.                         // SQL_SERVER contiene: localhost
  6.                         // WEB_TITLE contiene: Prueba
  7.         }
  8.     }

Pero me muestra un error de este tipo:
Notice: Array to string conversion in C:\xampp\htdocs\prep.php on line 14

Alguien podría indicarme en qué estoy fallando, o que estoy haciendo mal?
  #2 (permalink)  
Antiguo 17/04/2017, 17:58
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Recorrer array dentro de otro array con key

Te aconsejo que leas la documentación
Código PHP:
Ver original
  1. $vars = array(
  2.         'SQL' => array(
  3.             '_SERVER' => 'localhost'
  4.         ),
  5.         'WEB' => array(
  6.             '_TITLE' => 'Prueba'
  7.         )
  8.     );
  9.    
  10. foreach($vars as $var) {
  11.     foreach($var as $key => $value) {
  12.         echo "$key : $value";
  13.     }
  14. }
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 19/04/2017, 06:14
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Recorrer array dentro de otro array con key

A ese array se le llama multidimensional y para ese tipo de arrays tienes que aplicarle una funcion recursiva. ¿Que puedes solucionarlo con dos foreach? Por supuesto pero solo con ese arrya, y si tuviera mas niveles? No vas ha hacer un foreach por cada nivel...

Lo mejor es la recursividad en la mayoria de casos..

Por otra parte, en el codigo que compartiste del foreach(), tu fallo esya en la linea 3. Sobra $clave1.

Es decir:
Código PHP:
Ver original
  1. echo $valor ,' contiene: ', $contenido;
  #4 (permalink)  
Antiguo 19/04/2017, 15:13
 
Fecha de Ingreso: julio-2015
Ubicación: Distrito Federal
Mensajes: 97
Antigüedad: 8 años, 9 meses
Puntos: 2
Respuesta: Recorrer array dentro de otro array con key

Cita:
Iniciado por hhs Ver Mensaje
Te aconsejo que leas la documentación
Código PHP:
Ver original
  1. $vars = array(
  2.         'SQL' => array(
  3.             '_SERVER' => 'localhost'
  4.         ),
  5.         'WEB' => array(
  6.             '_TITLE' => 'Prueba'
  7.         )
  8.     );
  9.    
  10. foreach($vars as $var) {
  11.     foreach($var as $key => $value) {
  12.         echo "$key : $value";
  13.     }
  14. }
Gracias por tu respuesta, sí, he leído la documentación y de hecho así tal cual lo tenía pero igual me seguía dando error.

Cita:
Iniciado por Triby2 Ver Mensaje
A ese array se le llama multidimensional y para ese tipo de arrays tienes que aplicarle una funcion recursiva. ¿Que puedes solucionarlo con dos foreach? Por supuesto pero solo con ese arrya, y si tuviera mas niveles? No vas ha hacer un foreach por cada nivel...

Lo mejor es la recursividad en la mayoria de casos..

Por otra parte, en el codigo que compartiste del foreach(), tu fallo esya en la linea 3. Sobra $clave1.

Es decir:
Código PHP:
Ver original
  1. echo $valor ,' contiene: ', $contenido;
Gracias Tirby, ahora que me has dicho esto es lo que daba el error. Pero lo que quiero es concatenar el string de la primer key, junto con cada uno de las keys del segundo array, no se si me explique. Para que al final resulte algo como WEB_TITLE concatenando WEB que es la key del primero con cada una de las que tiene dentro, por ejemplo _TITLE.
Por ello lo había hecho de esta manera:

Código PHP:
echo $clave1.$valor ,' contiene: '$contenido
¿Será posible hacer esto?
  #5 (permalink)  
Antiguo 20/04/2017, 07:47
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Recorrer array dentro de otro array con key

Lo que pides es posible y ya tienes el ejemplo necesario para resolver tu problema, así que te toca hacer algo de esfuerzo amigo. si sigues teniendo problemas bueno vuelves a publicar aquí mismo y se te va ayudando.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 20/04/2017, 08:13
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Recorrer array dentro de otro array con key

Cita:
Iniciado por Silenn Ver Mensaje
Gracias por tu respuesta, sí, he leído la documentación y de hecho así tal cual lo tenía pero igual me seguía dando error.



Gracias Tirby, ahora que me has dicho esto es lo que daba el error. Pero lo que quiero es concatenar el string de la primer key, junto con cada uno de las keys del segundo array, no se si me explique. Para que al final resulte algo como WEB_TITLE concatenando WEB que es la key del primero con cada una de las que tiene dentro, por ejemplo _TITLE.
Por ello lo había hecho de esta manera:

Código PHP:
echo $clave1.$valor ,' contiene: '$contenido
¿Será posible hacer esto?
Oh wow!!! ni me fijé en el tremendo fallo, deberías de activar el display_error y setear el error_reporting a 'E_ALL' para que php te señale los fallos.

en el echo tienes que sustituir las comas por los puntos para concatenar, las comas solo sirve para separar valores en un array o parametros en una funcion.
  #7 (permalink)  
Antiguo 20/04/2017, 18:46
 
Fecha de Ingreso: julio-2015
Ubicación: Distrito Federal
Mensajes: 97
Antigüedad: 8 años, 9 meses
Puntos: 2
Respuesta: Recorrer array dentro de otro array con key

Me sigue saltando el mismo error:

Notice: Array to string conversion in C:\xampp\htdocs\prep.php on line 15

Aún con la concatenación por puntos salta el error mencionado, esto me provoca dolores de cabeza jaja.
  #8 (permalink)  
Antiguo 20/04/2017, 22:18
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Recorrer array dentro de otro array con key

Cita:
Iniciado por Silenn Ver Mensaje
Me sigue saltando el mismo error:

Notice: Array to string conversion in C:\xampp\htdocs\prep.php on line 15

Aún con la concatenación por puntos salta el error mencionado, esto me provoca dolores de cabeza jaja.
Pues el error está sie do muy claro.... array to string conversion.... estas tratando de comcatenar un array con un string.

Si le quitaste al echo $clave1, no deberia de saltarte ese error pero si no compartiste todo el array completo y resulta que hay mas keys y resulta que en alguno de ellos value o contenido es un array, tendras ese problema.

Cuando es un array largo, lo que hago yo en estos casos es setear una variable $i a 0 y por cada vez que recorro el array le sumo 1 al valor y le hago un echo, entonces cuando salta el error, veo el numero donde paro el loop y entonces reviso el elementoen cuestion.

Algo como:

Código PHP:
Ver original
  1. $a = $b = 0;
  2. foreach($vars as $var) {
  3.     echo 'A: ' . $a . '<br>';
  4.  
  5.     foreach($var as $key => $value) {
  6.         echo 'B: ' . $b . '<br>';
  7.         echo "$key : $value";
  8.        $b++;
  9.     }
  10.  
  11.     $a++;
  12. }

Última edición por Triby2; 20/04/2017 a las 22:59

Etiquetas: key, sql
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:27.