Array en PHP (ARRAY PHP)
En este artículo veremos el uso del array en php. Las principales funciones para el trabajo con array, entre otros aspectos.
Declaración de un array en PHP:
Para declarar un arreglo en PHP se utiliza la palabra reservada array, veamos el siguiente ejemplo donde se declara un array que totalmente vacío.
<?php
$nombre_array_php = array();
?>
Declaración de un array inicializado con nombres:<?php
$nombres = array( "Pablo" , "Juan", "Pedro");
?>
Declaración de un array de distintos tipos:Podemos tener en un
array distintos tipos de datos en su contenido, en el siguiente ejemplo que representa el nombre de una persona, su edad y el nombre de sus hijos, vemos como el primer elemento es un texto (
string) , el segundo es un entero (
integer) y el tercero es otro arreglo (
array)
<?php
$persona = array( "Pablo" , 30, array("Juan", "Pedro") );
?>
Adicionar elemento al arrayA diferencia de otros lenguajes de programación, en PHP no es necesario tener en cuenta la capacidad del arreglo al inicio y/o al añadir elementos al mismo. Usted puede añadir tantos elementos desee, siempre y cuando la memoria se lo permita.
La forma de añadir un elemento al final del
array es con los operadores de índices corchetes [] de la siguiente manera:
<?php
$nombres = array( "Pablo" , "Juan", "Pedro");
$nombres[] = "José"; // Añadir nombre José
$nombres[] = "María"; // Añadir nombre María
?>
Otra forma de hacerlo es a través de la función
array_push() , esta función recibe como primer parámetro el arreglo que se desea añadir el o los elementos, y los siguientes parámetros son todos los elementos.
<?php
$nombres = array( "Pablo" , "Juan", "Pedro");
array_push($nombres, "José", "María");
?>
Array asociativos
Los array asociativos a diferencia de los anteriores , cada elemento tiene asociado un valor único que lo identifica.
Por ejemplo , si retomamos uno de los ejemplos anteriores donde queríamos almacenar de una persona el nombre, la edad y los nombres de los hijos, una forma muy sugerente de hacerlos colocando asociaciones:
<?php
$persona = array( "nombre"=> "Pablo" , "edad"=> 30, "hijos"=> array("Juan", "Pedro") );
?>
Las asociaciones se realizan de la siguiente forma:
key=>valor , donde
key es un valor único , seguido va el operador igual mayor (=>) indicando que a dicha asociación le corresponde el valor siguiente.
Acceder y modificar elementos en un array
Una buena pregunta en este punto es preguntarse como acceder a los elementos de un array. ¿De la forma clásica en otros lenguajes? Pues la respuesta es en gran medida: de la forma clásica a otros lenguajes de programación.
Para acceder a un elemento se utilizan los operadores corchetes, pasando entre el mismo el índice o la asociación de cada elemento. Para modificar este valor el proceso es el mismo pero se iguala a un nuevo valor o variable: $arra[key] = “nuevo valor”. Vea el ejemplo a continuación y los comentarios en cada caso:
<?php
$persona = array( "nombre"=> "Pablo" , "edad"=> 30, "hijos"=> array("Juan", "Pedro") );
$nom = $persona["nombre"]; // accede y almacena el nombre en la variable $nom
$persona["edad"] = 56; // modifica la edad por el valor: 56 ?>
Si tomamos como referencia el ejemplo anterior veremos que para acceder y el nombre colocando entre corchetes la asociación correspondiente: $persona["nombre"];
Índices automáticos en un array
Pero que sucede con los arreglos que no colocamos explícitamente asociaciones. ¿Cómo acceder a los valores?
En el siguiente ejemplo las asociaciones son tomadas automáticamente , comenzando por cero (0) e incrementándose de uno en uno.
<?php
$nombres = array( "Pablo" , "Juan" , "Pedro");
echo $nombres[0]; // imprime "Pablo"
echo $nombres[1]; // imprime " Juan"
echo $nombres[2]; // imprime " Pedro"?>
Pero qué pasaría si interrumpimos este proceso:
<?php
$nombres = array( "Pablo" , "Juan" , "Pedro", 6=>"José", "María");
?>
En este ejemplo sus índices y valores quedarían como se muestra en la siguiente tabla:
Índice | valor |
0 | "Pablo" |
1 | "Juan" |
2 | "Pedro" |
6 | "José" |
7 | " María" |
Los valores simplemente se incrementan teniendo en cuenta el mayor índice e incrementa en base a este, incluso si hacemos saltos de valores como el que se muestra a continuación:
<?php
$ejemplo = array("1", "2", "3", 6=>"4", "5", 4=>"6", "7");
?>
Como se ve se rompe con el incremento cuando se coloca como asociación el 6=>"4". Luego se vuelve a romper el incremento cuando se coloca: 4=>"6". Se podría pensar que el próximo índice podría ser el valor 5 , pues el 5 no está después del 4 , que fue la última asociación; pero no es así, si imprimimos este
array los resultados son los siguientes:
Índice | valor |
0 | 1 |
1 | 2 |
2 | 3 |
6 | 4 |
7 | 5 |
8 | 7 |
¿Qué sucede si almacenamos dos veces con el mismo índice?
Si almacenamos 2 veces con el mismo índice como el ejemplo de abajo , se sobre-escribe el valor anterior al último , por lo que hay ser cuidadosos a menos que lo hagamos con toda intensión.
<?php
$ejemplo = array("1", "2", "3", 6=>"4", "5", 6=>"6", "7");
?>
Índice | valor |
0 | 1 |
1 | 2 |
2 | 3 |
6 | 6 |
7 | 5 |
Longitud de un arreglo (count)
La función para determinar la longitud de un arreglo es : count($array)
<?php
$nombres = array( "Pablo" , "Juan" , "Pedro");
echo count($nombres); // imprime 3
?>
Recorrer un arreglo a través de un for, foreach
Para recorrer los elementos de un arreglo , se pueden usar muchos mecanismos. Si el arreglo tiene índices automáticos, que no fueron interrumpidos, se puede usar un ciclo for, como se ve en el ejemplo siguiente:
<?php
$nombres = array( "Pablo" , "Juan" , "Pedro");
for ($i=0; $i< count($nombres); $i++ )
{
echo $nombres[$i];
}
?>
Para recorrer los elementos de un arreglo que no estamos seguros de que sus elementos sigan índices que comiencen por cero e incrementen de uno en uno, lo podemos hacer usando el ciclo foreach
<?php
$nombres = array( "Pablo" , "Juan" , "Pedro");
foreach ($array as $valor)
{
echo $valor;
}
?>
Sin duda este último ejemplo usando foreach es algo mucho más elegante, corto y menos propenso a errores.
Si además necesitamos los índices a medida que iteremos los elementos del array usamos el foreach de la siguiente forma:
<?php
$nombres = array( "Pablo" , "Juan" , "Pedro");
foreach ($array as $key => $valor)
{
echo $key. "=>" . $valor; // imprime {key}=>{valor}
}
?>