Neuralpin Logo

Arreglos en PHP

Los arreglos son una herramienta del lenguaje que permite agrupar datos en una sola variable en forma de lista, esto con el fin de organizar, ordenar, buscar y filtrar elementos, permitiendo una manipulación de datos más fácil y eficiente

Manejo de bases de datos SQL en PHP

En un arreglo se pueden ingresar datos de cualquier tipo, incluso otros arreglos, lo que permite crear estructuras mas complejas.

Arreglos simples

Empezar a crear arreglos es muy fácil, solo debemos definir una variable y asignarle como valor un par de corchetes, uno de apertura y uno de cierre, lo cual le indica al lenguaje que queremos generar un arreglo vació.

$data = [];

Para añadir datos a nuestro arreglo se usa el formato $data[] = 'data';, para ejemplificarlo añadamos los nombres de los colores a un arreglo llamado $colors:

$colors = [];
$colors[] = 'rojo';
$colors[] = 'verde';
$colors[] = 'azul';

¿Y como recuperamos datos de un arreglo?, en un arreglo la información se almacena en forma de lista, pero por defecto la lista es numerada y empieza a contar por el numero cero, por lo que la forma de acceder a nuestra información sería la siguiente:

echo $colors[0]; // rojo
echo $colors[1]; // verde
echo $colors[2]; // azul

La forma de acceder a los datos de un arreglo es mediante el nombre de la variable seguido de la posición del elemento, la posición se indica entre corchetes.

¿Como se cambia el valor de un elemento dentro de un arreglo?

Tal como accedemos a un arreglo podemos modificarlo, solo necesitamos escribir el nombre de la variable que contiene el arreglo e indicar la posición del elemento que necesitamos modificar, ejemplo:

$colors[0] = 'morado';
echo $colors[0]; // morado

A la posición de un elemento dentro de un arreglo se le conoce como llave ó clave por su nombre en ingles "Key" y no solo puede contener números, puede contener cualquier carácter alfanumérico.

Aún trabajando solo con claves numéricas no es obligatorio comenzar desde el cero, ni siquiera es necesario asignar números consecutivos e incluso se pueden ingresar valores negativos.

Veamos un ejemplo de asignación manual de claves:

$colors = [];
$colors[1] = 'rojo';
$colors[2] = 'verde';
$colors[4] = 'azul';

echo $colors[1]; // rojo
echo $colors[2]; // verde
echo $colors[4]; // azul

En este ejemplo definimos un arreglo vació y a continuación asignamos los valores ingresando las claves deseadas.

También podemos definir una variable como arreglo y al mismo tiempo asignarle los valores, todo en la misma estructura, para ello entre los corchetes característicos de un arreglo se agregan los valores a asignar, separados por coma, por ejemplo:

$fruits = ['peras', 'manzanas', 'uvas'];  // Caja de frutas

echo $fruits[0]; // peras
echo $fruits[1]; // manzanas

Gracias a esta forma abreviada y directa de definir arreglos es que se suele decir que los arreglos son como cajas que contienen cosas, donde los corchetes son las paredes que delimitan esas cajas.

Arreglos asociativos

Cuando usamos claves alfanuméricas ó usamos números pero de forma no consecutiva ó usamos números de forma consecutiva pero sin empezar por el número cero la estructura recibe el nombre de arreglo asociativo.

Veamos un ejemplo de arreglo asociativo con claves alfanuméricas:

$days = [];
$days['dom'] = 'domingo';
$days['lun'] = 'lunes';
$days['mar'] = 'martes';
$days['mie'] = 'miercoles';
$days['jue'] = 'jueves';
$days['vie'] = 'viernes';
$days['sab'] = 'sabado';

echo $days['lun']; // lunes
echo $days['dom']; // domingo

En este ejemplo vemos una forma de organizar los nombres de los días en una sola variable y acceder a ellos mediante los nombres abreviados de los días.

Ahora veamos ese mismo ejemplo pero en la forma abreviada de definir arreglos.

$days = [
    'dom' => 'domingo',
    'lun' => 'lunes',
    'mar' => 'martes',
    'mie' => 'miércoles',
    'jue' => 'jueves',
    'vie' => 'viernes',
    'sab' => 'sábado',
];

echo $days['lun']; // lunes
echo $days['dom']; // domingo

Aquí cambia un poco el formato, ya que ahora debemos introducir el operador "=>" (flecha doble) ya que al definir un arreglo de forma directa con claves personalizadas es necesario indicar cual es la clave y cual es el valor del elemento.

Lo que esta a la izquierda del operador "flecha doble" siempre representa la clave del elemento dentro del arreglo y del lado derecho siempre se indica el valor, y aquí se hace evidente que los arreglos en php son una colección de claves y valores.

A este tipo de estructuras tipo clave => valor también se les conoce como diccionarios ya que de un lado tenemos una palabra y del otro lado tenemos la definición (palabra => definición) aunque también se les conoce como mapas ya que sabiendo la dirección (la clave) se puede llegar a un lugar deseado (el valor) (dirección => lugar).

Hasta aquí hemos visto que un arreglo asociativo (claves alfanuméricas) se define y se comporta muy parecido a un arreglo simple (claves numéricas consecutivas empezando por el cero) y ambos permiten agrupar datos en forma de lista, ahora toca ver como se pueden combinar para crear estructuras mas complejas.

Arreglos multi-dimensionales

Podemos asignar arreglos como valores dentro de otros arreglos, de esta forma se pueden asignar aún mas datos a una única variable, pero de esta forma los datos son menos una lista y mas como una tabla, la cual contiene celdas con muchos datos que a su vez pueden contener a otras tablas.

Empecemos con un ejemplo simple, imagina que queremos hacer una pequeña app para ayudarnos a hacer las compras, empecemos creando una estructura para gestionar nuestra lista de compras:

$products = [
    [
        'name' => 'leche', 'found' => '✔️',
    ],
    [
        'name' => 'manzanas', 'found' => '✔️',
    ],
];

Tenemos un arreglo de productos que contiene un arreglo con el nombre del producto y un dato que nos sirva como check ✔️ de que efectivamente encontramos el producto al ir a la tienda.

Si queremos imprimir el nombre del primer producto de la lista por comprar tendríamos que hacer lo siguiente:

echo $products[0]['name']; // leche

Y al haber comprado el ítem ahora tendríamos que cambiar el valor de found por un true:

$products[0]['found'] = '✔️';

Y si por el camino se nos ocurre añadir un producto mas a la lista el código a usar sería el siguiente:

$products[] = ['name' => 'azúcar', 'found' => '✖️'];

¿Y si por el camino preferimos olvidarnos de las manzanas y en su lugar compramos peras? pues ahora tendríamos que usar el siguiente código (recordando que las manzanas están en la posición 1):

$products[1] = ['name' => 'peras', 'found' => '✔️'];

Pues ya hemos hecho nuestra lista de compras con un check para saber si logramos comprar los items o no, ahora vamos a imprimir todos los datos dentro de nuestro arreglo multidimensional:

echo "Nombre: {$products[0]['name']} - Encontrado: {$products[0]['found']}"; // Nombre: leche - Encontrado: '✔️'
echo "Nombre: {$products[1]['name']} - Encontrado: {$products[1]['found']}"; // Nombre: peras - Encontrado: '✔️'
echo "Nombre: {$products[2]['name']} - Encontrado: {$products[2]['found']}";// Nombre: lazúcar - Encontrado: '✖️'

Aunque este código funciona y permite imprimir todos los datos no es lo más optimo, ¿que pasaría si en lugar de solo tener 3 items tuviéramos 10 veces más?

Pues sería demasiado tedioso y una perdida de tiempo manejar ese volumen de datos de forma manual.

Afortunadamente las computadores son buenas para realizar de forma automática operaciones repetitivas como esta, solo debemos indicar que tareas repetir mediante alguna estructura especial, estas estructuras se conocen como bucles, ciclos, estructuras repetitivas, estructuras iterativas, estructuras recursivas, etc.

En el próximo articulo veremos estas estructuras, y seguiremos viendo nuevas formas de usar los arreglos para resolver todo tipo de problemas.

Conclusión

En conclusión, los arreglos en PHP son una herramienta versátil que permite organizar, gestionar y manipular datos de manera fácil y ya conoces el uso y diferencias entre arreglos simples, arreglos asociativos y arreglos multidimencionales.