Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/10/2012, 19:59
Avatar de rodrigo791
rodrigo791
 
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años
Puntos: 168
[APORTE] Arrays multidimensionales

Este aporte está pensado para tener al menos una noción de:
- ¿Qué es un array multidimensional?
- ¿Cómo crearlos?
- ¿Cómo se puede acceder a sus elementos?

- ¿Qué es un array multidimensional?

Un array multidimensional, es un array como otros pero con la particularidad de que algunos de sus elementos pueden ser otros arrays, dicho de otra forma es un array que contiene otros arrays.

- ¿Cómo crearlos?

No es complicado crearlos, si sabemos crear un array cualquiera con la palabra reservada array(), será lo mismo para este caso.

Los tipicos arrays mas conocidos son los que su posición o también llamado índice es un tipo numérico, como este:
Código PHP:
Ver original
  1. $array = array(10,20,30);
en este ejemplo tenemos un array llamado 'array' el cual tiene 3 elementos, los cuales son numéricos los 3 y sus índices también son numéricos.
En el índice 0 tenemos como valor el 10, en el índice 1 tenemos el 20 y en el 2 tenemos el elemento 30.

Esto es bastante simple, pero cuando queremos crear un array multidimensional vamos a empezar a tener elementos dentro de nuestro array principal, que también son arrays.

Un ejemplo:
Código PHP:
Ver original
  1. /*Defino el array $persona con sus elementos*/
  2.  $persona = array(
  3.  "Nombre" => "pepito",
  4.  "Apellido" => "fulanito",
  5.  "Edad" => 21,
  6.  "Otros_datos" => array(
  7.                             "Sexo" => "Masculino",
  8.                             "Color de pelo" => "Castaño",
  9.                             "¿Estudiante?" => "SI",
  10.                             "Direccion" => "Calle pepe Nº 107",
  11.                             "Pais" => "Uruguay"
  12.                             )
  13.  );

en este caso creo el array $persona en el cual almacenamos datos sobre una persona cualquiera, vemos que sus indices son strings ( cadenas de texto ) que sería como crear un array asociativo, lo cual se aplica al índice 'Nombre', 'Apellido' y 'Edad', pero mas abajo es donde aparece la parte interesante y es donde definimos realmente nuestro array persona como uno multidimensional ya que el indice a continuación llamado 'Otros_datos' ¡es un array!

Como se puede ver lo defino con la palabra array() y a continuación sus indices y asignandoles valores con el signo de =>
Código PHP:
Ver original
  1. "Sexo" => "Masculino",

el nombre del indice es un string llamado Sexo que representa el sexo de esta persona y en este caso es Masculino, su valor se lo asigno con =>
y entre cada elemento va un separador , ( coma ).

- ¿Cómo se puede acceder a sus elementos?

Podemos acceder de forma manual, nombrando al array con sus índices, de esta forma
Código PHP:
Ver original
  1. echo "Nombre: ".$persona['Nombre']."<br />";
  2. echo "Edad: ".$persona['Edad']."<br />";
  3. echo "<br />";
  4. echo "Otros datos: <br />";
  5. echo "Sexo: ".$persona['Otros_datos']['Sexo']."<br />";
  6. echo "Color de pelo: ".$persona['Otros_datos']['Color de pelo']."<br />";
  7. echo "¿Estudiante?: ".$persona['Otros_datos']['¿Estudiante?']."<br />";
  8. echo "Dirección: ".$persona['Otros_datos']['Direccion']."<br />";
  9. echo "País: ".$persona['Otros_datos']['Pais']."<br />";

para mostrar por ejemplo el nombre de la persona simplemente lo hago haciendo referencia a $persona['Nombre'], el nombre del array principal y su indice.

Pero para el caso de los datos que están en el array Otros_datos tengo que hacerlo de la siguiente forma $persona['Otros_datos']['Color de pelo'], dado que es un array dentro de otro, tengo que hacer referencia también al array que está dentro del principal.

Código PHP:
Ver original
  1. //Vemos la estructura de nuestro array
  2. var_dump($persona);
  3.  
  4. //Tiene solo 3 elementos, Nombre, Edad y Otros_datos que también es otro array pero se comporta como 1 elemento mas del array
  5. echo "Candidad de elementos del array \$persona: ".count($persona);
  6. echo "<br />";
  7.  
  8. //6 elementos, sexo, color de pelo, etc...
  9. echo "Cantidad de elementos del array \$Otros_datos que pertenece al array \$persona: ".count($persona['Otros_datos']);


Otra forma mas eficaz de mostrar los elementos es usando la función foreach() la cual sirve para objetos y para arrays.
http://www.php.net/manual/es/control...es.foreach.php

y podría usarse de la siguiente manera

Código PHP:
Ver original
  1. //Muestro los indices y elementos del array recorriendolo con la función foreach
  2. foreach($persona as $clave){ //Primero recorro el array almacenando en $clave cada indice del mismo, o sea cada posición
  3.     if(!is_array($clave)){ /*Dado que es un array que contiene a otros arrays, tengo que preguntar si en la posición actual
  4.     que estoy parado es o no un array, en este caso uso la función is_array() que verifica si una variable es un array.
  5.     En caso de que la posición actual NO sea un array entonces se supone que es una posición simple y la puedo mostrar sin problemas*/
  6.     echo $clave."<br />";    
  7.     }else{ //En caso de que la posición actual SI sea un array, entonces acá tengo que recorrer dicha posición y mostrar sus elementos
  8.         foreach($clave as $indice => $valor){ /*recorro la posición $clave y almacendo su indice en $indice y el valor en $valor
  9.         luego simplemente muestro el indice con su valor*/
  10.             echo $indice." :".$valor."<br />";
  11.         }
  12.     }
  13.    
  14. }

espero que les sirva