Desarrollo

Cómo trabajar con arrays en PHP

Desarrollo PHP

Empezamos un artículo denso en contenido debido a las múltiples opciones que nos dan en cuanto a sintaxis de los arrays en PHP. Pero un artículo necesario para ver sus usos principales, y quizá con algunos conceptos nuevos o más avanzados que no hemos tocado ni pretendemos hacerlo tan pronto.

Simplemente, diremos que en PHP los arrays se manejan como mapas ordenados. Un mapa es una estructura de datos que asocia valores con claves y que se puede utilizar para muchas más cosas que simples arrays. A claves nos referimos a los índices del array, pues pueden ser números u otros tipos de datos.

Veamos cómo empezar a construir arrays en PHP.

Construcción básica

Para definir un array utilizamos la instrucción array(), la cual lo construye a partir de cualquier número de parejas clave => valor como argumentos, colocando ese símbolo => haciendo efecto de una flecha. La clave puede ser un entero o un string, mientras que el valor puede ser de cualquier tipo.

También podemos definir el array utilizando el símbolo [ para comenzar el array y el símbolo ] para finalizarlo. Veamos un sencillo ejemplo:

<?php

// Definición con array()
$arrayEnLinea = array('precio' => 25.0, 'iva' => 21, 'descuento' => 5.0);

$arrayMultiLinea = array(
  'precio' => 25.0,
  'iva' => 21,
  'descuento' => 5.0
);

// Definición con []
$arrayEnLineaCorchetes = ['precio' => 25.0, 'iva' => 21, 'descuento' => 5.0];

$arrayMultiLineaCorchetes = [
  'precio' => 25.0,
  'iva' => 21,
  'descuento' => 5.0
];

?>

Como veis, se pueden definir tanto en una línea como en varias líneas. Si el array que vamos a definir es muy largo, podemos definirlo en varias líneas para así aumentar su legibilidad cara al programador. Para el propio programa, es indiferente escribirlo en una o varias líneas.

Normas en la definición de claves

Pese a haber comentado que sólo se pueden definir claves como enteros o strings, lo cierto es que PHP no se va a quejar en algunas acciones. Por ejemplo, si indicamos como clave el string ‘1’, PHP lo transformará en un entero, pero no hará lo mismo con el string ’01’. Si le indicamos un float, como 2.3 por ejemplo, PHP se quedará sólo con su parte entera y guardará un 2 como clave. Los booleanos true y false los transforma en 1 y 0 respectivamente. Y, obviamente, nos dará error si queremos que la clave sea otro array u otro tipo de datos más complejo.

Lo mejor es no complicarnos la vida y definir siempre los arrays con enteros o strings que nos sean suficientemente explícitos. Se suelen definir claves con strings cuando ese valor nos es de utilidad (como en el ejemplo anterior) porque podemos reaprovecharlo.

Si definimos dos elementos del array con la misma clave, sólo se utilizará la última escrita y se borrará la anterior.

Claves opcionales

Indicarle una clave es totalmente opcional. Por ejemplo, estas dos definiciones de arrays son, en realidad, la misma:

<?php

$arrayConClaves = array(0 => 'Programación', 1 => 'Básica');
$arraySinClaves = array('Programación', 'Básica');

?>

Cuando un array se define sin claves, internamente PHP lo guarda con claves numéricas comenzando desde 0. Por tanto, tanto $arrayConClaves como $arraySinClaves son exactamente iguales.

Si colocáramos una clave numérica en algún elemento y no en los demás, los siguientes seguirían la cuenta desde esa clave indicada.

<?php

$array = array('Programación', 4 => 'Básica', '2020');
// Clave 0 para 'Programación'
// Clave 4 para 'Básica'
// Clave 5 para '2020'

?>

Arrays multidimensionales

Se pueden definir arrays multidimensionales, es decir, arrays dentro de otros arrays sin ningún tipo de problema. En el ejemplo a continuación definimos un array donde guardamos un producto, un modelo y un precio que, realmente, es otro array donde guardamos el precio base, el IVA y el descuento.

<?php

$arrayMultidimensional = array(
  'producto' => 'Bicicleta',
  'modelo' => 'BY256',
  'precio' => array(
    'base' => 250.00,
    'iva' => 21,
    'descuento' => 5.0
  )
);

?>

Acceso a elementos de los arrays en PHP

Para acceder al elemento de un array podemos utilizar la sintaxis array[clave], siendo array el nombre de la variable y clave la propia clave definida. Si queremos acceder a un elemento de un array multidimensional deberemos añadir nuevos corchetes al final array[clave1][clave2].

<?php

$arrayMultidimensional = array(
  'producto' => 'Bicicleta',
  'modelo' => 'BY256',
  'precio' => array(
    'base' => 250.00,
    'iva' => 21,
    'descuento' => 5.0
  );
);

// Mostramos por pantalla el nombre del producto
echo $arrayMultidimensional['producto'] . '<br>';

// Mostramos por pantalla el precio base del producto
echo $arrayMultidimensional['precio']['base'] . '<br>';

?>

Adición y modificación de elementos

Podemos añadir elementos principalmente de dos formas: indicándole la clave o sin indicársela. El primer método, es decir, indicándole la clave, también sirve para modificar el valor del elemento que le pasamos como clave. Veamos un ejemplo y luego lo analizamos.

<?php

$array = array('primero' => 1234);

$array['segundo'] = 456;
$array[] = 789;
$array['primero'] = 123;

?>

Como vemos, utilizamos igualmente la misma estructura array[clave] que hemos utilizado para acceder al valor del array. Sin embargo, como en esta ocasión estamos utilizando esa estructura a la izquierda de una asignación, en lugar de acceder al valor del array lo estamos sobreescribiendo o creando.

En la línea 5 estamos añadiendo al array un elemento con clave ‘segundo’ y valor 456. En la línea 6 estamos añadiendo un elemento sin clave al final del array con valor 789. Y en la línea 7 estamos sobreescribiendo el elemento con clave ‘primero’ colocándole ahora el valor 123. Tendremos un array de tres elementos: 123, 456 y 789 cuyas claves serán ‘primero’, ‘segundo’ y 0, pues el último elemento no tenía clave y se le asigna el primer número disponible, es decir, el cero.

Además de esta forma, hay otras formas de añadir o modificar elementos de un array, pero son formas que veremos más adelante cuando hablemos de las funciones, aunque sí utilizaremos algunas ya para los siguientes casos.

Borrado de elementos

Pese a que todavía no hemos visto las funciones, cabe decir que tenemos que indicar en este artículo cómo se borra un elemento de un array para que quedara completo. Sabemos añadir y modificar pero nos falta saber borrar. Para ello utilizamos la función unset() indicándole el elemento con la estructura vista anteriormente de array[clave].

<?php

$array = array('primero' => 123, 'segundo' => 456, 'tercero' => 789);

// Para eliminar el segundo valor del array
unset($array['segundo']);

// Para eliminar el array al completo
unset($array);

?>

Conteo de elementos

También otra función, que ya veremos bien lo que son en el futuro, necesitaremos para contar los elementos de un array, algo también muy útil para nuestras estructuras de control. Para ello, en PHP debemos utilizar la función count() a la que le pasamos el array para que nos devuelva su tamaño.

<?php

$array = array('primero' => 123, 'segundo' => 456, 'tercero' => 789);

// En $longitud se guardaría el valor 3
$longitud = count($array);

Resumen

Hemos visto cómo trabajar de forma básica con arrays en PHP. Su construcción, adición, modificación y borrado. Su definición de claves y cómo definir arrays multidimensionales. Pese a que puede parecer algo tedioso, el uso de arrays será algo extremadamente habitual en nuestros programas, pues es muy común el uso de colecciones de elementos.

En el futuro, cuando hayamos avanzado un poco más en cuestiones básicas, dedicaremos otro artículo a ver funciones y utilidades que incorpora PHP para trabajar con arrays. Por ahora, y gracias a ellos, ya podemos dar un nuevo paso en las estructuras de control iterativas.

Deja una respuesta