Traductor


Matrices o Arrays en PHP

PHP perite almacenar varias variables diferentes, que pueden almacenar valores distintos, bajo el mismo nombre, identificándolas mediante el uso de uno o mas indices.

Nos referimos a las matrices o Arrays. Podemos imaginar las matrices como las casillas de apartados postales en una oficina de correos. Todas pueden ser identificadas mediante, por ejemplo, el nombre de oficina seguido del número de casilla y cada una tendrá un contenido distinto.

El formato genérico de una matriz es así:

nombreMatriz[índice 1][índice 2]...[índice N] = valor

Las matrices se clasifican, según la naturaleza del índice empleado, en Indexadas y asociativas.


Matrices Indexadas

  • Son aquellas en las que el índice es un valor numérico. 
  • Para empezar, veamos cómo crearíamos una matriz con nombres de personas (aunque, por supuesto, podríamos usar otros valores):

$nombres = array("Pedro", "Ana", "Celeste", "María", "Alfredo");
Con esto se habría creado una matriz de cinco elementos .
  • Fíjese que ocupamos la función array().
  • Esta función recibe como argumentos, los elementos que queremos almacenar en la matriz, y la crea.
  • A cada uno de estos elementos se le ha asignado un índice numérico secuencial, según el orden en el que han sido dispuestos en la declaración, empezando por cero.
  • Para recuperar alguno de los elementos de la matriz, usaremos la notación genérica siguiente:
$matriz[$n]
  • En esta notación, $n entre corchetes es un valor numérico referido al índice del elemento de la matriz que nos interesa. Como índice podemos usar un número o una constante o variable que lo represente. Vea el siguiente script
<?php
                $nombres = array ("Pedro", "Ana", "Celeste", "María", "Alfredo");
                echo ($nombres[0]."<br />");
                echo ($nombres[1]."<br />");
                echo ($nombres[2]."<br />");
                echo ($nombres[3]."<br />");
                echo ($nombres[4]."<br />");
?>
Algo que debe saber es que los elementos de una matriz no tienen que ser, necesariamente, del mismo tipo. En una matriz se pueden almacenar cadenas alfanuméricas, valores numéricos, valores booleanos, etc.
<?php
                $nombres = array ("Pedro", "Ana", 34, True);
                echo ($nombres[0]."<br />");
                echo ($nombres[1]."<br />");
                echo ($nombres[2]."<br />");
                echo ($nombres[3]."<br />");
?>
Corra este script en su navegador y vea como aparecen los resultados. Quizá el único dato que le llame la atención sea el último, pero recuerde que al tratare de un dato booleano, PHP interpreta el True como un 1 y False como 0.


También es importante saber que las matrices no tienen un número inamovible de elementos. Si una vez creada la matriz, usted necesita añadir mas elementos lo puede hacer, simplemente añadiéndolo a la matriz o  declarando el elemento nuevo y su valor como en el siguiente script. 

<?php
                $nombres = array ("Pedro", "Ana", "Carmen", "Alfredo", "Eva");
                echo ($nombres[0]."<br />");
                echo ($nombres[1]."<br />");
                echo ($nombres[2]."<br />");
                echo ($nombres[3]."<br />");
                echo ($nombres[4]."<br />");
                $nombres[5]="Susana";
                echo ($nombres[5]."<br />");
?>
Quiero llamar su atención sobre la línea que aparece en azul, en ella ve como se crea un nuevo elemento que no aparece en la declaración inicial de a matriz.
Al ejecutar el script puede notar que todo funciona adecuadamente.
Otra forma de declararlo podría ser así:
<?php
                $nombres = array ("Pedro", "Ana", "Carmen", "Alfredo", "Eva");
                echo ($nombres[0]."<br />");
                echo ($nombres[1]."<br />");
                echo ($nombres[2]."<br />");
                echo ($nombres[3]."<br />");
                echo ($nombres[4]."<br />");
                $nombres[ ]="Susana";
                echo ($nombres[5]."<br />");
?>
Y seguiría funcionando bien, ya que PHP asigna de manera automática los indices.


A la hora de referirnos a uno de los elementos de una matriz  podemos escribir el índice, o una variable que contenga el índice, tal como se muestra en el siguiente script.

<?php
          $nombres = array ("Pedro", "Ana", "Carmen", "Alfredo", "Eva");
          $indice=2;
          echo ($nombres[$indice]."<br />");
?>
Vea las relaciones de colores para os elementos del script.
De esta manera solo se mostrará el resultado que corresponde al índice número dos.

Alterar el Orden de una Matriz

Regresando a lo que habíamos dicho de que los índices empiezan desde el cero. Este es el comportamiento por defecto de la matriz, sin embargo, esto no tiene que ser siempre así. Usted puede crear los índices según le convenga en cada caso.
Veamos el siguiente script:
<?php
                $nombres = array (1=>"Pedro", "Ana", "Carmen", "Alfredo", "Eva");
                echo ($nombres[1]."<br />");
                echo ($nombres[2]."<br />");
                echo ($nombres[3]."<br />");
                echo ($nombres[4]."<br />");
                echo ($nombres[5]."<br />");
?>
Observe lo que esta resaltado de color rojo.
Al primer índice se le asigna de forma forzada el índice 1 mediante la operación 1=>.
Como a los demás índices no se les asigna un índice específico PHP los enumera secuencialmente a partir del 2.
Y no solo puede alterar el primer elemento lo puede hacer arbitrariamente, y no se preocupe por el almacenamiento en memoria, que PHP solo ocupa espacio para los índices que han sido declarados.
$nombres = array (1=>"Pedro", "Ana",  50=>"Carmen", "Alfredo", "Eva");
En este ejemplo:
  • La numeración sería 1, 2, 50, 51,  52.
  • PHP solo ocupa memoria para 5 indices, mas no para 52 indices
  • Cuando lo desee, usted puede crear nuevos índices, incluso indices intermedios.
$nombres[34] = "Carmelo";

Matrices asociativas

Usar índices numéricos en las matrices es muy práctico en ocasiones  A veces para referirse a un elemento de una matriz, resulta interesante calcular su indice mediante operaciones aritméticas basadas en datos proporcionados por el usuario.
Sin embargo, en ocasiones el uso de índices numéricos resulta engorroso, por la misma razón que resultaría llamar a todas las variables de nuestro script $variable_1, $variable_2, $variable_n. 
Para solucionar este problema, PHP introdujo las matrices asociativas, en las que los índices son cadenas de texto que podemos definir como nos convenga.
Suponga que va a crear una matriz con los datos personales de un amigo suyo. En la matriz usted quiere almacenar el nombre, la dirección y el teléfono de esta persona:
Observe el siguiente script:
<?php
                $amigo = array ("nombre"=>"Pedro Torres", "direccion"=>"CL Mayor, 37", "telefono"=>123456789);
                echo ($amigo["nombre"]."<br />");
                echo ($amigo["direccion"]."<br />");
                echo ($amigo["telefono"]."<br />");
?>
Observe como cada elemento (lo que esta de verde) tiene un índice (lo que esta de rojo) con la asignacion =>
De esta manera los elementos corresponden con su tipo de índice.
Y al igual que lo hicimos con la Matriz Indexada, en lugar de colocar el índice podemos colocar una variable que contenga dicho índice.
<?php
                $amigo = array ("nombre"=>"Pedro Torres", "direccion"=>"CL Mayor, 37", "telefono"=>123456789);
                $indice="nombre";
                echo ($amigo[$indice]."<br />");
                $indice="direccion";
                echo ($amigo[$indice]."<br />");
                $indice="telefono";
                echo ($amigo[$indice]."<br />");
?>
Ejecute el código y compruebe su funcionamiento.

Matrices Mixtas

Visto lo anterior, pasaremos a la parte de combinar tanto las matrices indexadas como las asociativas.
Suponga que usted quiere almacenar en una matriz los datos personales de mas amigos. La solución puede llegar de la mano de matrices con dos índices: uno numérico para referirse a cada amigo y otro asociativo para los datos de cada uno.
Observe el siguiente script y preste mucha atención:
<?php
                $amigos = array (array("nombre"=>"Pedro Torres", "direccion"=>"CL Mayor, 37", "telefono"=>123456789), array("nombre"=>"Carlos Gómez", "direccion"=>"CL Alfareros, 12", "telefono"=>567891234), array("nombre"=>"Susana Casas", "direccion"=>"CL Sierra Grande, 2", "telefono"=>987654321), array("nombre"=>"Carmen Pérez", "direccion"=>"CL Himalaya, 189", "telefono"=>502983948));

                echo ("<table border='2' cellpadding='2' cellspacing='0'>");
                echo ("<tr>");
                echo ("<th>Número</th>");
                echo ("<th>Nombre</th>");
                echo ("<th>Dirección</th>");
                echo ("<th>Teléfono</th>");
                echo ("</tr>");
                echo ("<tr>");
                echo ("<td>0</td>");
                echo ("<td>".$amigos[0]["nombre"]."</td>");
                echo ("<td>".$amigos[0]["direccion"]."</td>");
                echo ("<td>".$amigos[0]["telefono"]."</td>");
                echo ("</tr>");
                echo ("<tr>");
                echo ("<td>1</td>");
                echo ("<td>".$amigos[1]["nombre"]."</td>");
                echo ("<td>".$amigos[1]["direccion"]."</td>");
                echo ("<td>".$amigos[1]["telefono"]."</td>");
                echo ("</tr>");
                echo ("<tr>");
                echo ("<td>2</td>");
                echo ("<td>".$amigos[2]["nombre"]."</td>");
                echo ("<td>".$amigos[2]["direccion"]."</td>");
                echo ("<td>".$amigos[2]["telefono"]."</td>");
                echo ("</tr>");
                echo ("<tr>");
                echo ("<td>3</td>");
                echo ("<td>".$amigos[3]["nombre"]."</td>");
                echo ("<td>".$amigos[3]["direccion"]."</td>");
                echo ("<td>".$amigos[3]["telefono"]."</td>");
                echo ("</tr>");
                echo ("</table>");
?>
Lo que aparecerá en el navegador será:

Paso a Paso

  • El array del ejemplo en color naranja, hace referencia a una matriz indexada y dentro de ella se declaran cuatro matrices asociativas.
  • Ahora vea la forma de acceder a los elementos de una matriz, se realiza en forma jerárquica.
$matriz [índice][asociación]
  • Podrían ser dos indices indexados o dos asociativos, no hay problema en eso.
  • También la matriz puede ser irregular, es decir no se requiere que todos tengan la misma asociación, por ejemplo:
  $amigos = array (array("nombre"=>"Pedro Torres", "direccion"=>"CL Mayor, 37", "telefono"=>123456789), array("nombre"=>"Carlos Gómez", "direccion"=>"CL Alfareros, 12", "telefono"=>567891234), array("nombre"=>"Susana Casas", "telefono"=>987654321), array("nombre"=>"Carmen Pérez", "direccion"=>"CL Himalaya, 189", "telefono"=>502983948));
    • A susana le falta su dirección
    • A Carmen su teléfono
  • Y es perfectamente válido
En los siguientes capítulos de PHP veremos como determinar el tamaño de una Matriz y como ordenarlas, pero por el momento ya tiene suficiente por aprender.
  
Recuerden Comentar Compartir y Darle 

Hasta la Próxima

Si te hemos ayudado : )
Te agradeceríamos que apoyaras este proyecto

0 comentarios:

Publicar un comentario