Curso PHP: Arrays unidimensionales

Curso PHP: Arrays simples y asociativos

Una matriz, vector o array se puede considerar como un conjunto de datos agrupados de forma secuencial uno al lado del otro, que en el caso de arrays unidimensionales, se puede ver como una fila de datos:

8 7.5 Excelente

Podemos observar que hay un total de 3 datos. En programación, cada uno de estos datos es identificado con un índice, que en los arrays simples empieza en 0 y en los asociativos es especificado por nosotros.

0 1 2
8 7.5 Excelente

El índice es lo que nos permite obtener los datos guardados en un array. Podéis imaginar que la fila de datos es una estantería industrial y los índices son los números identificativos de cada celda (cajón) de esa estantería, en que el operario para encontrar el objeto debe saber el número de celda de la estantería.

Definición de un array simple en PHP

En PHP para crear un array se utiliza la función interna array() y a partir de PHP 5.4 (si no recuerdo mal) se puede utilizar también la sintaxis de [] para inicializar un array vacío:

<?php
$datos = array();
$datos2 = []; //Sólo disponible a partir de PHP 5.4
?>

Sabiendo ésto, podemos representar los datos anteriores mediante un array en PHP de la siguiente manera:

<?php
$notas = array(8, 7.5, 'Excelente');
$notas2 = [8, 7.5, 'Excelente'];
?>

Acceso a los datos de un array

Ya hemos definido nuestro array, pero ¿cómo podemos acceder a dichos datos? El proceso es relativamente sencillo, sólo debemos especificar el índice entre [] después de la variable donde se haya definido el array:

<?php
$notas = array(8, 7.5, 'Excelente');
 
echo $notas[0] . '<br/>';
echo $notas[1] . '<br/>';
echo $notas[2];
?>
Si disponemos de más de 100 registros de datos en un array, lógicamente no podemos ir dato por dato y debe haber otra manera de hacerlo. En las próximas lecciones veremos cómo acceder a estos datos mediante bucles y el uso de funciones como implode() y explode()

Arrays asociativos en PHP

Como ya habremos deducido, los datos de nuestro array vienen a representar una serie de notas de un curso académico. Por lo que viendo las notas dentro del array sin saber a qué materia pertencen es poco útil. ¿Qué pasa si queremos especificar la materia asociada a una nota?

En PHP podemos especificar el índice de un elemento del array mediante el operador => (no confundir con >=), de la siguiente manera:

<?php
$notas = array('Bases de datos' => 8, 'Lenguajes de marcas' => 7.5,  'PHP' => 'Excelente');
?>

Y el acceso a los datos se hace de la misma manera que en los arrays simples, solo que ahora tendremos que especificar el índice especificado por nosotros:

<?php
$notas = array('Bases de datos' => 8, 'Lenguajes de marcas' => 7.5,  'PHP' => 'Excelente');
 
echo '<strong>Bases de datos:</strong> ' . $notas['Bases de datos'] . '<br/>';
echo '<strong>Lenguajes de marcas:</strong> ' . $notas['Lenguajes de marcas'] . '<br/>';
echo '<strong>PHP:</strong> ' . $notas['PHP'];
?>

Sí, ahora podemos especificar la materia a la hora de imprimir la nota porque ya sabemos con certeza qué nota está asociada a qué materia.

Agregar más datos a un array

Sin importar de qué array estamos hablando (ya que la única diferencia es el índice, si es ‘personalizado’ o predeterminado por PHP), podemos definir nuevos elementos dentro de un array, o bien definiendo un índice antes o agregando el elemento directamente con un índice por defecto.

Vamos a agregar una nueva nota para la materia de “Servicios web”:

<?php
$notas = array('Bases de datos' => 8, 'Lenguajes de marcas' => 7.5,  'PHP' => 'Excelente');
 
$notas['Servicios web'] = 7;
 
echo '<strong>Bases de datos:</strong> ' . $notas['Bases de datos'] . '<br/>';
echo '<strong>Lenguajes de marcas:</strong> ' . $notas['Lenguajes de marcas'] . '<br/>';
echo '<strong>PHP:</strong> ' . $notas['PHP'] . '<br/>';
echo '<strong>Servicios web:</strong> ' . $notas['Servicios web'];
?>

Podíamos haber agregado esta nota sin asignarle un índice de la siguiente manera:

<?php
$notas = array('Bases de datos' => 8, 'Lenguajes de marcas' => 7.5,  'PHP' => 'Excelente');
 
$notas[] = 7;
 
echo '<strong>Bases de datos:</strong> ' . $notas['Bases de datos'] . '<br/>';
echo '<strong>Lenguajes de marcas:</strong> ' . $notas['Lenguajes de marcas'] . '<br/>';
echo '<strong>PHP:</strong> ' . $notas['PHP'] . '<br/>';
echo '<strong>Servicios web:</strong> ' . $notas['Servicios web'];
?>

Pero ¡OJO! ahora el índice no es ‘Servicios web’, por lo que PHP nos muestra una advertencia:

Notice: Undefined index: Servicios web in D:\xampp\htdocs\arrays.php on line 10

Cuando no se especifica ningún índice, PHP asigna el primer índice por defecto que no se haya utilizado aún dentro del array, que en este caso sería el 0:

<?php
$notas = array('Bases de datos' => 8, 'Lenguajes de marcas' => 7.5,  'PHP' => 'Excelente');
 
$notas[] = 7;
 
echo '<strong>Bases de datos:</strong> ' . $notas['Bases de datos'] . '<br/>';
echo '<strong>Lenguajes de marcas:</strong> ' . $notas['Lenguajes de marcas'] . '<br/>';
echo '<strong>PHP:</strong> ' . $notas['PHP'] . '<br/>';
echo '<strong>Servicios web:</strong> ' . $notas[0];
?>

En la próxima lección veremos algunas funciones que nos pueden ayudar a la hora de trabajar con arrays. Nos vemos 😉

Curso PHP: Operaciones con cadenas
Curso PHP: Arrays multidiminesionales

Publicar un comentario