Spanish (Español) translation by Ana Paulina Figueroa (you can also view the original English article)
En esta publicación aprenderás los fundamentos de los arreglos en PHP. Aprenderás cómo crear un arreglo y cómo usar arreglos asociativos y multidimensionales, además de ver muchos ejemplos de arreglos en acción.
¿Qué es un arreglo?
En PHP, un arreglo es una estructura de datos que te permite almacenar múltiples elementos en una sola variable. Estos elementos se almacenan como pares clave-valor. De hecho, puedes usar un arreglo cada vez que haya la necesidad de almacenar una lista de elementos. La mayoría de las veces, todos los elementos de un arreglo tienen tipos de datos similares.
Por ejemplo, digamos que queires almacenar nombres de frutas. Sin un arreglo, terminarías creando múltiples variables para almacenar los nombres de las diferentes frutas. Por otro lado, si usas un arreglo para almacenar dichos nombres, éste se vería así:
1 |
<?php
|
2 |
$array_fruits = array('Apple', 'Orange', 'Watermelon', 'Mango'); |
3 |
?>
|
Como puedes ver, hemos usado la variable $array_fruits
para almacenar los diferentes nombres de las frutas. Algo genial de este enfoque es que puedes añadir más elementos a la variable de tipo arreglo $array_fruits
más adelante.
Existen muchas formas de manipular los valores en la variable de tipo arreglo, y vamos a explorarlas en la parte final de este artículo.
Cómo inicializar un arreglo
En esta sección exploraremos cómo inicializar una variable de tipo arreglo y cómo añadir valores a dicha variable.
Cuando se trata de inicializar arreglos, existen algunas maneras diferentes. En la mayoría de los casos es la construcción array()
del lenguaje la que se usa para inicializar un arreglo.
1 |
<?php
|
2 |
$array = array(); |
3 |
?>
|
En el fragmento anterior, la variable $array
se inicializa con un arreglo vacío.
A partir de PHP 5.4 también puedes usar la siguiente sintaxis para inicializar un arreglo:
1 |
<?php
|
2 |
$array = []; |
3 |
?>
|
Ahora veamos cómo añadir elementos a un arreglo.
1 |
<?php
|
2 |
$array = []; |
3 |
$array[] = 'One'; |
4 |
$array[] = 'Two'; |
5 |
$array[] = 'Three'; |
6 |
echo '<pre>'; |
7 |
print_r($array); |
8 |
?>
|
El fragmento anterior debe generar la siguiente salida:
1 |
Array
|
2 |
(
|
3 |
[0] => One |
4 |
[1] => Two |
5 |
[2] => Three |
6 |
)
|
El aspecto importante a destacar aquí es que el índice de un arreglo comienza en 0. Cada vez que agregues un nuevo elemento a un arreglo sin especificar un índice, el arreglo asigna un índice automáticamente.
Desde luego, también puedes crear un arreglo que ya esté inicializado con valor. Esta es la manera más concisa de declarar un arreglo si ya sabes qué valores tendrá.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
?>
|
Cómo acceder a los elementos de un arreglo
En la sección anterior discutimos cómo inicializar una variable de tipo arreglo. En esta sección vamos a explorar algunas maneras diferentes de acceder a los elementos del arreglo.
La primera manera obvia de acceder a los elementos del arreglo es obtenerlos a través de la clave o índice del arreglo.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
// get the first element of the $array array
|
5 |
echo $array[0]; |
6 |
echo "<br>"; |
7 |
|
8 |
// get the second element of the $array array
|
9 |
echo $array[1]; |
10 |
echo "<br>"; |
11 |
|
12 |
// get the third element of the $array array
|
13 |
echo $array[2]; |
14 |
echo "<br>"; |
15 |
?>
|
El fragmento anterior debe generar la siguiente salida:
1 |
One
|
2 |
Two
|
3 |
Three
|
Una manera más limpia de escribir el código anterior es a través del uso de un bucle foreach
para recorrer los elementos del arreglo.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
foreach ($array as $element) { |
5 |
echo $element; |
6 |
echo '<br>'; |
7 |
}
|
8 |
?>
|
El fragmento anterior debe producir la misma salida, y requiere mucho menos código.
De manera similar, también puedes usar el bucle for
para recorrer los elementos del arreglo.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
$array_length = count($array); |
4 |
|
5 |
for ($i = 0; $i < $array_length; ++$i) { |
6 |
echo $array[$i]; |
7 |
echo '<br>'; |
8 |
}
|
9 |
?>
|
Aquí estamos usando el bucle for
para pasar a través de cada índice del arreglo y luego usando la instrucción echo con el valor almacenado en ese índice. En este fragmento hemos introducido una de las funciones más importantes que vas a usar al trabajar con arreglos: count
. Se usa para contar cúantos elementos hay en un arreglo.
Tipos de arreglos en PHP
En esta sección discutiremos los diferentes tipos de arreglos que puedes usar en PHP.
Arreglos indexados numéricamente
Un arreglo con el índice numérico se encuentra bajo la categoría de un arreglo indexado. De hecho, los ejemplos que hemos discutido hasta ahora en este artículo son de arreglos indexados.
El índice numérico se asigna automáticamente cuando no lo especificas de forma explícita.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
?>
|
En el ejemplo anterior no especificamos un índice para cada elemento explícitamente, por lo que será inicializado con el índice numérico automáticamente.
Desde luego, también puedes crear un arreglo indexado usando el índice numérico, como se muestra en el fragmento siguiente,
1 |
<?php
|
2 |
$array = []; |
3 |
$array[0] = 'One'; |
4 |
$array[1] = 'Two'; |
5 |
$array[2] = 'Three'; |
6 |
?>
|
Arreglos asociativos
Un arreglo asociativo es similar a un arreglo indexado, pero puedes usar valores de tipo cadena para las claves del arreglo.
Veamos cómo definir un arreglo asociativo.
1 |
<?php
|
2 |
$employee = [ |
3 |
'name' => 'John', |
4 |
'email' => 'john@example.com', |
5 |
'phone' => '1234567890', |
6 |
];
|
De forma alternativa, puedes usar la siguiente sintaxis también.
1 |
<?php
|
2 |
$employee = []; |
3 |
$employee['name'] = 'John'; |
4 |
$employee['email'] = 'john@example.com'; |
5 |
$employee['phone'] = '1234567890'; |
6 |
?>
|
Para acceder a los valores de un arreglo asociativo, puedes usar ya sea el índice o el bucle foreach
.
1 |
<?php
|
2 |
$employee = [ |
3 |
'name' => 'John', |
4 |
'email' => 'john@example.com', |
5 |
'phone' => '1234567890', |
6 |
];
|
7 |
|
8 |
// get the value of employee name
|
9 |
echo $employee['name']; |
10 |
|
11 |
// get all values
|
12 |
foreach ($employee as $key => $value) { |
13 |
echo $key . ':' . $value; |
14 |
echo '<br>'; |
15 |
}
|
16 |
?>
|
Como puedes ver, aquí obtuvimos el nombre consultándolo directamente, y luego usamos el bucle foreach
para obtener todos los pares clave-valor del arreglo.
Arreglos multidimensionales
En los ejemplos que hemos discutido hasta ahora, hemos usado valores escalares como elementos del arreglo. De hecho, incluso puedes almacenar arreglos como elementos dentro de otros arreglos. Esto se conoce como arreglo multidimensional.
Veamos un ejemplo
1 |
<?php
|
2 |
$employee = [ |
3 |
'name' => 'John', |
4 |
'email' => 'john@example.com', |
5 |
'phone' => '1234567890', |
6 |
'hobbies' => ['Football', 'Tennis'], |
7 |
'profiles' => ['facebook' => 'johnfb', 'twitter' => 'johntw'] |
8 |
];
|
9 |
?>
|
Como puedes ver, la clave hobbies
en el arreglo $employee
almacena un arreglo de pasatiempos (o hobbies). De la misma manera, la clave profiles
almacena un arreglo asociativo de los diferentes perfiles.
Veamos cómo acceder a los valores de un arreglo multidimensional.
1 |
<?php
|
2 |
$employee = [ |
3 |
'name' => 'John', |
4 |
'email' => 'john@example.com', |
5 |
'phone' => '1234567890', |
6 |
'hobbies' => ['Football', 'Tennis'], |
7 |
'profiles' => ['facebook' => 'johnfb', 'twitter' => 'johntw'] |
8 |
];
|
9 |
|
10 |
// access hobbies
|
11 |
echo $employee['hobbies'][0]; |
12 |
// Football
|
13 |
|
14 |
echo $employee['hobbies'][1]; |
15 |
// Tennis
|
16 |
|
17 |
// access profiles
|
18 |
echo $employee['profiles']['facebook']; |
19 |
// johnfb
|
20 |
|
21 |
echo $employee['profiles']['twitter']; |
22 |
// johntw
|
23 |
?>
|
Como puedes observar, es posible acceder a los elementos de un arreglo multidimensional con el índice o la clave de ese elemento en cada parte del arreglo.
Algunas funciones útiles para los arreglos
En esta sección revisaremos un puñado de útiles funciones para los arreglos que se usan frecuentemente para operaciones con los mimsos.
La función count
La función count
se usa para contar el número de elementos de un arreglo. Esto es útil a menudo si quieres recorrer un arreglo con un bucle for
.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
// print the number of elements in the array
|
5 |
echo count($array); |
6 |
|
7 |
// the above code should output
|
8 |
3
|
9 |
?>
|
La función is_array
Esta es una de las funciones más útiles para trabajar con arreglos. Se usa para verificar si una variable es un arreglo o si es de algún otro tipo de dato.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
// check if the variable is an array
|
5 |
if (is_array($array)) |
6 |
{
|
7 |
// perform some array operation
|
8 |
}
|
9 |
?>
|
Siempre deberías usar esta función antes de llevar a cabo cualquier operación de arreglo si no estás seguro del tipo de dato.
La función in_array
Si quieres verificar si un elemento existe en el arreglo, la función in_array
es la que viene al rescate.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
// check if a variable is an array
|
5 |
if (in_array('One', $array)) |
6 |
{
|
7 |
echo 'Yes'; |
8 |
}
|
9 |
else
|
10 |
{
|
11 |
echo 'No'; |
12 |
}
|
13 |
?>
|
El primer argumento de la función in_array
es un elemento que quieras verificar, y el segundo argumento es el arreglo en sí.
La función explode
La función explore
divide una cadena en múltiples partes y la devuelve como un arreglo. Por ejemplo, digamos que tienes una cadena separada por comas y que quieres dividirla por las comas.
1 |
<?php
|
2 |
$string = "One,Two,Three"; |
3 |
|
4 |
// explode a string by comma
|
5 |
$array = explode(",", $string); |
6 |
|
7 |
// output should be an array
|
8 |
echo '<pre>'; |
9 |
print_r($array); |
10 |
|
11 |
// output
|
12 |
/*Array
|
13 |
(
|
14 |
[0] => One
|
15 |
[1] => Two
|
16 |
[2] => Three
|
17 |
)*/
|
18 |
?>
|
El primer argumento de la función explode
es una cadena delimitante (la cadena por la que estés dividiendo), y el segundo argumento es la cadena en sí.
La función implode
Esta hace lo opuesto a la función explode
. Dado un arreglo y una cadena de unión, la función implode
puede generar una cadena uniendo todos los elementos de un arreglo con una cadena de unión entre ellos.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
|
4 |
$string = implode(",", $array); |
5 |
|
6 |
// output should be a string
|
7 |
echo $string; |
8 |
|
9 |
// output: One,Two,Three
|
10 |
?>
|
El primer argumento de la función implode
es una cadena de unión, y el segundo argumento es el arreglo a colapsar.
La función array_push
La función array_push
se usa para añadir nuevos elementos al final de un arreglo.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
array_push($array, 'Four'); |
4 |
|
5 |
echo '<pre>'; |
6 |
print_r($array); |
7 |
|
8 |
// output
|
9 |
/*Array
|
10 |
(
|
11 |
[0] => One
|
12 |
[1] => Two
|
13 |
[2] => Three
|
14 |
[3] => Four
|
15 |
)*/
|
16 |
?>
|
El primer argumento es un arreglo, y los argumentos subsecuentes son elementos que serán añadidos al final de un arreglo.
La función array_pop
La función array_pop
quita un elemento del final de un arreglo.
1 |
<?php
|
2 |
$array = ['One', 'Two', 'Three']; |
3 |
$element = array_pop($array); |
4 |
|
5 |
echo '<pre>'; |
6 |
print_r($array); |
7 |
|
8 |
// output
|
9 |
/*Array
|
10 |
(
|
11 |
[0] => One
|
12 |
[1] => Two
|
13 |
)*/
|
14 |
?>
|
La función array_pop
devuelve el elemento que se quita de un arreglo, de manera que puedas colocarlo en la variable. Junto con array_push
, esta función es útil para implementar estructuras de datos como pilas.
Conclusión
Eso es todo lo que necesitas para comenzar a codificar con arreglos en PHP. Viste cómo crear arreglos y cómo recuperar elementos de los mismos. Aprendiste sobre los diferentes tipos de arreglos en PHP, y pudiste ver algunas de las funciones más útiles integradas en PHP para trabajar con arreglos.