Tema: foreach
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/02/2017, 16:00
Ramonromero
 
Fecha de Ingreso: enero-2008
Ubicación: Valencia
Mensajes: 65
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: foreach

Cita:
Iniciado por Alexis88 Ver Mensaje
Siendo esa la estructura del arreglo y considerando que, así como hay elementos que también son arreglos, puede haber más elementos internos dentro de los arreglos internos que también sean arreglos; o sea, arreglos dentro de arreglos dentro de arreglos.

Para estos casos, la recursión es precisa:
Código PHP:
Ver original
  1. function printArr($array){
  2.     foreach($array as $key => $value){ //Recorremos el arreglo principal
  3.         if (is_array($value)){ //Si es un arreglo
  4.             echo $key . ': [' . printArr($value) . "\r\n" . ']'; //Se imprime el índice que ocupa y se ejecuta el llamado de la función
  5.         }
  6.         else{ //Caso contrario
  7.             $object = json_decode($value); //Decodificamos la supuesta cadena JSON
  8.             if (!is_null($object)){ //Si lo anterior no es nulo, se trata de un objeto
  9.                 echo $key . ': {' . "\r\n"; //Imprimimos el índice en el que se encuentra
  10.                 foreach ($object as $k => $v){ //Y lo recorremos
  11.                     if (is_array($v)){ //Si el valor es un arreglo
  12.                         echo $k . ': [' . printArr($v) . "\r\n ]"; //Se imprime el índice que ocupa y se ejecuta el llamado de la función
  13.                     }
  14.                     else{ //Caso contrario
  15.                         echo $k . ': ' . $v . "\r\n";   //Se imprime el índice y valor
  16.                     }
  17.                 }
  18.                 echo "\r\n" . '}'; //Se imprime el cierre del objeto
  19.             }
  20.             else{ //Caso contrario
  21.                 echo $key . ': ' . $value . "\r\n"; //Se imprime el índice y valor
  22.             }
  23.         }
  24.     }
  25. }

DEMO

asi es como me lo muestra:

item1: si item2: no color: azul tipo: circulo 0: [ ]color: rojo tipo: triangulo 1: [ ]color: verde tipo: cuadrado 2: [ ]item3: [ ]0: [ ]