Los arrays en php son una forma muy eficiente de agrupar datos. Como vimos anteriormente, los arrays son un tipo especial de variable donde podemos almacenar mas de un valor a la vez. Piensalos como una columna de excel donde tiene n filas, cada fila puede almacenar un valor. Si dominas los arrays tendras una herramienta muy potente para solucionar problemas que veras a diario. Cuando trabajemos acceso a bases de datos, vas a usar muchisimo este tipo especial de variable.

Tener una coleccion de variables para almacenar ciertos datos podria lucir asi:


$nombre1 = "Ricardo"; 
$nombre2 = "Lucas"; 
$nombre3 = "Claudia";

Para almacenar estos datos, puedes usar un array:

$nombres = array(
  "Ricardo", "Lucas", "Claudia"
);

Notas la ventaja? Menos variables, menos codigo y por tanto mas eficiencia. Siempre que necesites almacenar un listado de algo, usas un array.

Definiendo arrays en php

Si eres observador, seguro te diste cuenta que para crear un array se usa una funcion llamada array(), y que esta recibe n parametros. Es asi, cada parametro que metas en los argumentos de la funcion va a ser un elemento de tu array. Aunque esta no es la unica forma de definirlos, te muestro otra:

$nombres = ["Ricardo", "Lucas", "Claudia"];

Usando corchetes tambien se pueden declarar arrays, y en el resultado del programa no tiene absolutamente ningun impacto. Es lo mismo crear un array con «array()» que con «[]». Como php es de tipado dinamico, dentro del array podemos meter valores de cualquier tipo, incluso otros arrays. Te muestro un ejemplo:

$cosas = ["Carro", 1, "c", -89];

Indices de los arrays en php

Cada elemento dentro de un array en php tiene un indice o «index». Ese indice es la posicion que ocupa en la lista. Siempre, el primer elemento de la lista en un array en php tiene indice 0. El proximo tiene indice 1, y el proximo 2 y asi sucesivamente hasta llegar al final del array. El indice de un array es muy importante porque utilizandolo es que podemos acceder al valor que tenemos almacenado. Pongamos un ejemplo:

$nombres =["Ricardo", "Lucas", "Claudia"];

En este array de nombres, si queremos obtener primer nombre, hacemos esto:

$nombre = $nombres[0];

O sea, utilizando corchetes y un parametro index podemos acceder a la posicion de memoria dentro del array que queramos. Si queremos obtener a «Claudia», hacemos esto:

$nombre = $nombres[2];

Pilla el truco, siempre tienes que restarle 1 a la posicion real del array para obtener la que quieres. O sea: «Quieres obtener el 3er nombre de la lista», entonces indexas en 2. Esto es porque el index del primer elemento de la lista es un 0.

Nada te impide usar variables para acceder a posiciones de memoria dentro de los arrays, o sea, puedes usar variables dentro de los corchetes para resolver problemas mas complicados. Te muesrtro un jemplo:

$i = 1;
$nombre = $nombres[$i]; //Devuelve el nombre "Lucas"

Arrays Asociativos

Los arrays asociativos son un tipo especial y muy util de arrays en php que permiten indexar no solamente con enteros, sino con strings. Tambien llamados «arrays de hash», estos arrays tienen multiples usos para cuando queremos representar datos de una forma mas compleja. Digamos que queremos almacenar los datos de una persona en un array (nombre, apellido, edad):

$persona = array(
  "nombre"   => "Ricardo",
  "Apellido" => "Almira",
  "Edad"     => 30
);

La sintaxis es muy parecida a los arrays que te explique arriba, solo cambian los index, y este nuevo operador =>. Aqui basicamente estamos diciendo que en el index «nombre» se me almacene el valor «Ricardo» y asi con los demas valores. Es importante que conozcas que los indices en los arrays asociativos son unicos (de ahi lo de hash). O sea, si tratas de agregar otro indice «nombre» con el valor «Pedro», php no te va a agregar nada, solo te va a sobreescribir el nombre «Ricardo» por «Pepe» (manteniendo el mismo indice). Para que veas un ejemplo, te muestro como acceder a los valores del array asociativo en el siguiente ejemplo:

$a = $persona['nombre'];             //--- Devuelve el valor string Ricardo en $a
echo $a. '  '. $persona['apellido']; //--- Imprime el string "Ricardo Almira"

En la linea 1 ves el acceso a un index del array asociativo y se almacena en la variable $a. En la linea 2 ves un echo que concatena ese valor de $a con un acceso directo al valor del apellido. Como seguro te diste cuenta, puedes combinar todas las tecnicas que conoces en las instrucciones para lograr los resultados deseados, siempre que no violes la sintaxis del lenguaje que estas trabajando.

Ejemplo 1

$nombres = [];
for($i = 1; $i <= 5; $i++){

    echo "Introduzca el nombre $i: ";
    $name = fgets(STDIN);
    $nombres[] = $name;

}

var_dump($nombres);

Este ejemplo es un simple algoritmo para recibir 5 nombres por teclado y al final imprimirlos en pantalla. La funcion var_dump() recibe un parametro que puede ser un array, e imprime todo su contenido en la consola. Esta instruccion es muy util para depurar nuestros programas y ver que va pasando en el interior de nuestros componentes de software.

Aqui estamos usando varias de las cosas que ya has aprendido, ciclos, recibir texto por teclado y hay una cosa nueva. $nombres[] = $name; Esta linea de codigo lo que hace es «agregar» al final del array $nombres el valor que tiene la variable $name. O sea, en cada iteracion del cico (5 en total), se le pide al usuario que teclee un nombre. Ese nombre se almacena en la variable $name, con fgets() y despues se inserta en el array. Fijate que estamos llamando al [], pero, donde esta el index? Se supone que para acceder a una posicion de memoria especificamos el index no? Correcto, pero esto es un shortcut que nos da php para cuando queremos agregar el valor a la lista simplemente al final. O sea, no nos interesa que posicion va tomando, solo queremos que se agregue al final. Php automaticamente asigna un index al nuevo valor, porque el sabe cual es su su ultimo elemento, entonces solo le suma 1 al index del ultimo elemento y te asigna ese nuevo index al nuevo elemento que va a entrar al array.

Algunas funciones de arrays en php

Como explicaba anteriormente, existen muchas funciones de php para el manejo de arrays, asi que veamos algunas de las mas utiles.

  1. count($data);
  2. array_values($data);
  3. is_array($data);
  4. array_slice($data, $offset, $lenght)

La funcion count()

Recibe como parametros un array, y devuelve la cantidad de elementos que conforman el array.

$data = [1,4,6,3,9,8];
echo count($data); //--- Devovleria 6

La funcion array_values()

Devuelve los valores del array. Si el array es asociativo, devuelve los valores (todos los que estan a la derecha del =>). Si es un array normal de toda la vida, entonces lo devuelve a el mismo. Ejemplo:

$data = array(
    "nombre" => "Ricardo",
    "apellidos" => "Almira",
    "edad" => "30",
);

$valores = array_values($data);
var_dump($valores);

Daria como resultado:

«Ricardo»
«Almira»
30

La funcion is_array()

Esta funcion devuelve un boolean, y determina si una variable es un array o no. Ejemplo:

$noArray = 1;
$array = [1,2,3,4,5];

echo is_array($noArray); //--- Imprimira false
echo is_array($array); //--- Imprimira true

La funcion array_slice

Esta funcion permite extraer una parte de un array. Tienes que especificarle desde que index quieres empezar y que cantidad hacia adelante quieres obtener. Un ejemplo:

$data = array("programming", "is", "awesome", "and", "cool");
$values = array_slice($data, 1, 2);
var_dump($values);

Devolveria los siguientes valores:

«is»
«awesome»

O sea, el segundo parametro es el index por el que quieres empezar a «partir» el array. El tercer parametro es la cantidad de elementos despues de ese que quieres obtener. El primero obviamente el array. Esto leido en nuestro idioma es: «Dame depues del elemento con index 1, dos elementos a partir de ese mismo».

arrays en php
Sigueme!
error