Arrays en PHP

Una matriz o array almacena un grupo de valores en una única variable y la información de un array puede ser manejada a nuestro antojo. La forma mas sencilla de crear un array es asignar una clave numérica entre corchetes "[]" al final de su nombre:
        $capital[1] = "Teruel";            
        $capital[2] = "Valencia";
        $capital[3] = "Madrid";
También podríamos crear un array asignando una clave diferente:
        $capital['TE'] = "Teruel";            
        $capital['VA'] = "Valencia";
        $capital['MA'] = "Madrid";
Podríamos crear los mismo valores asignando una clave numérica directamente, de esta manera la clave es un numero entero que empieza desde el 0 y autoincrementará conforme vallamos añadiendo valores a nuestro array
        $capital[] = "Teruel";      // $capital[0]
        $capital[] = "Valencia";    // $capital[1]
        $capital[] = "Madrid";      // $capital[2]
Otras formas de crear un array: con una clave numérica automática (ejemplo: $array1) o creando una clave manualmente (ejemplo: $array2).
        $array1 = array("Teruel", "Valencia", "Madrid");
        $array2 = array("TE" => "Teruel", "VA" => "Valencia", "MA" => "Madrid");



1. Visualizar arrays

Podremos visualizar un valor del array de la siguiente manera:
        echo $capital[0];
        echo $capital['TE'];
Si lo queremos incluir en una cadena de texto utilizaremos la siguiente declaración:
        echo "La ciudad {$capital['TE']} tiene 35,000 habitantes"];
Podremos consultar su estructura y valores utilizando las funciones: print_r() o var_dump()
        print_r($capital);
        
        // Salida:    Array
                        (
                         [TE] => Teruel
                         [VA] => Valencia
                         [MA] => Madrid
                        )
        var_dump($capital);
        
        // Salida:    array (3) {
                         [TE] => 
                         string (6) "Teruel"
                         [VA] => 
                         string (8) "Valencia"
                         [MA] => 
                         string (6) "Madrid"
                        }
Cuando utilizamos estos métodos para visualizar el array en un documento HTML la salida nos mostrara toda su estructura y valores en una sola linea muy larga. Para que esto no ocurra y podamos mostrar su salida en un formato mas útil, utilizaremos etiquetas HTML para que muestre el texto tal cual.
        echo "<pre>";
        var_dump($capital);
        echo "</pre>";


Otro punto a tener en cuenta es cuando se utiliza un valor inexistente en un array:
        $var1 = $capital['xxx'];
De esta manera simplemente se nos mostrara un aviso en el navegador. pero una manera de prevernirlo es añadir al comienzo de la declaración el símbolo "@"
        @$var1 = $capital['xxx'];



2. Eliminar valores

Partiendo del siguiente ejemplo:
        $capital[0] = "Teruel";            
        $capital[1] = "Valencia";
        $capital[2] = "Madrid";
        $capital[3] = "Malaga";
Podremos establecer el valor de un elemento del array a "nada"
        $capital[2] = "";
De esta manera solo eliminamos su valor, pero el elemento sigue estando presente el el array. Para eliminar un elemento del array podemos usar la siguiente función:
        unset($capital[2]);
Quedando el array de esta manera:
        $capital[0] = "Teruel";            
        $capital[1] = "Valencia";
        $capital[3] = "Malaga";



3. Ordenar arryas

Al crear una matriz o array todos sus elementos son ordenados conforme se van creando. PHP nos proporciona unas cuantas funciones para ordenar los arrays:

FunciónDescripción
sort($array)Ordena por valor, asignando una nueva clave numérica
asort($array)Ordena por valor, manteniendo la misma clave
rsort($array)Ordena por valor de forma inversa, asignando una nueva clave numérica
arsort($array)Ordena por valor, manteniendo la misma clave
ksort($array)Ordena por clave
krsort($array)Ordena por clave de forma inversa
krsort($array, function)Ordena por una función

Por lo tanto para ordenar el array del ejemplo anterior asignando una nueva clave numérica utilizaremos la siguiente declaración:
        sort($capital);            



4. Recuperar valores de un array

Podremos recuperar varios valores a través de la función "list()" indicando en los paréntesis los valores a recuperar:
        $flor = array("Rosa", "amarillo", 12.00);            
        list($tipo, $color) = $flor;
De esta forma estamos almacenando el primer valor del array en la variable "$tipo" y el segundo valor del array en la variable "$color". Por lo tanto lo siguiente es correcto:
        $tipo    es lo mismo que    $flor[0];            
        $color    es lo mismo que    $flor[1];


Otra forma de recuperar todos los valores de un array es a través de la función "extract()". Primero deberemos crear un array asignando una clave manual:
        $flor = array("tipo" => "Rosa", "color" => "amarillo""coste" => 12.00);            
Y para recuperar sus valores lo haremos de la siguiente manera:
        extract($flor);            
        echo "Es de variedad $tipo, de color $color y cuesta {$coste}€";

        // Salida:    Es de variedad Rosa, de color amarillo y cuesta 12.00€



5. Recorrer un array

Tenemos dos maneras de desplazarnos por un array: de forma manual de un valor a otro o de forma automática de principio a fin del array.

Para desplazarnos de forma manual tendremos que hacer uso de un puntero y utilizar las siguientes funciones:

FunciónDescripción
current($array)Valor actual
next($array)Mueve el puntero al siguiente valor 
previous($array)Mueve el puntero al valor anterior
end($array)Mueve el puntero al ultimo valor
reset($array)Mueve el puntero al primer valor

Un ejemplo podría ser el siguiente:
        $capital = ("Teruel", "Valencia", "Madrid");
        $valor = current($capital);
        echo "$valor<br />";
        $valor = next($capital);
        echo "$valor<br />";
        $valor = next($capital);
        echo "$valor<br />";
Normalmente si no se ha utilizado el puntero y es la primera vez que hacemos uso de la función current(). El puntero se coloca en la primera posición del array, de todas maneras podríamos reiniciarlo y volverlo a la primera posición utilizando la función reset().

Esta forma de recorrer un array requiere de una declaración y un echo por cada elemento del array. El resultado sera una lista con todos los elementos del array. Su caracteristica principal es que da flexibilidad ya que permite desplazarse por el array de cualquier manera.


Otra forma que nos ofrece PHP para recorrer un array es mediante la función "foreach()".  Esta función simplemente es un bucle que nos permitirá recorrer el array de principio a fin en el que podremos indicar una serie de declaraciones para cada repetición. Tiene la siguiente estructura:
        foreach($array as $key => $value) {
            // Declaraciones
        }
Podríamos describir las partes del bucle de la siguiente manera:

FunciónDescripción
$arrayNombre de la matriz o array
$keyNombre de la variable donde se almacenara la clave de un elemento del array
$valueNombre de la variable donde se almacenara el valor de un elemento del array

Un ejemplo seria el siguiente:
        $capital = array("TE" => "Teruel", "VA" => "Valencia", "MA" => "Madrid");
        foreach($capital as $codigo => $ciudad) {
            echo "$ciudad, $codigo <br />";
        }

        // Salida:
            Teruel, TE
            Valencia, VA
            Madrid, MA

Otra forma de utilizar el bucle para recuperar solamente las ciudades seria el siguiente
        foreach($capital as $ciudad) {
            echo "$ciudad <br />";
        }
Este método de desplazarse por el array no necesita reiniciar la matriz a la primera posición, el bucle empezara siempre desde la primera posición.



6. Arrays dimensionales

Para terminar el artículo, es posible que alguna vez necesitemos almacenar mas valores en un array. PHP nos permite utilizar arrays dimensionales, es decir, podremos almacenar en cada elemento de un array un valor y las claves que sean necesarias. Vamos a ver un ejemplo y su explicación:
        $ciudades['TE']['Aragon'] = "Teruel";
        $ciudades['MA']['Andalucia'] = "Malaga";
        $ciudades['LU']['Galicia'] = "Lugo";
Estamos creando un array con dos dimensiones debido a que hemos añadido dos claves por valor del array. PHP nos permite crear las dimensiones que sean necesarias pero utilizar muchas dimensiones puede ser un problema ya que contra mas dimensiones mas confusión nos creara.

Para recuperar un valor del array podremos utilizar la siguiente declaración:
        $resultado = $ciudades['TE']['Aragon'];
        echo $ciudades['TE']['Aragon'];
Sin embargo al usar un valor del array en una cadena de texto tendremos que encerrar el valor entre llaves {}:
        echo "Maria reside en la ciudad de $ciudades['TE']['Aragon']";
        
        // Salida:    Maria reside en la ciudad de Teruel


Podremos recorrer arrays dimensionales con el bucle foreach() teniendo en cuenta que necesitaremos un bucle por cada dimensión. Partiendo del ejemplo anterior en el que usábamos dos dimensiones, deberemos crear un bucle y dentro otro bucle para recuperar las dos dimensiones. A esta característica de incluir bucles foreach unos dentro de otros se le llama "nesting" o anidación. A continuación se muestra un ejemplo de uso:
        foreach($ciudades as $codigo) {
            foreach($codigo as $ciudad => $comunidad) {
                echo "$comunidad, $ciudad <br />";
            }
        }

        // Salida:
            Aragon, Teruel
            Andalucia, Malaga
            Galicia, Lugo


No hay comentarios:

Publicar un comentario