Creación de un Array
Un array puede ser creado con el constructor del lenguaje array()
. Éste toma cualquier número de parejas clave => valor como argumentos.
array( clave1 => valor1, clave2 => valor2, clave3 => valor3, ... );
También, a partir de PHP 5.4, es posible realizar la siguiente notación:
[ clave1 => valor1, clave2 => valor2, ... ]
Las clave solamente pueden ser del tipo entero o string. En todo si se utiliza otro tipo las consideraciones serán las siguientes:
- string con valores enteros válidos, se convertirán en enteros.
- flotantes se convertirán en enteros.
- booleanos pasar a ser enteros: false = 0 y true = 1.
- null se convertirá en un string vacío.
- arrays y objects no puede ser claves.
Indexación
- Si no se elige la clave para un elemento del array, se incorpora el siguiente número entero que corresponda.
- Si se inserta una clave que ya existe, el valor se sobrescribirá.
- Si un arreglo contiene clave enteras se denomina array indexado, y si contiene strings array asociativo.
- Un array puede ser indexado y asociativo al mismo tiempo.
Recorrido de un array
Es posible utilizar las construcciones usuales como el for
o while
para recorrer un array, sin embargo, se recomienda el foreach
, debido a las características de los array en PHP.
$arreglo = array( 'nombre' => 'Jose', 'identidad' => '0801199000123', 'nacimiento' => 'Tegucigalpa' ); // Iteración de un array foreach($arreglo as $clave => $valor) { echo $clave, ': ', $valor, PHP_EOL; }
Agregar elementos
Para agregar un elemento a un array se puede hacer uso de la función:
Función array_push
Insertará en la última posición uno o varios elementos.
$abecedario = ['a', 'b', 'c']; array_push($abecedario, 'd', 'e', 'f');
Construcción []
También puede utilizarse la construcción $array[]
, la cual agrega un índice numérico. Posee dos ventajas con respecto a la función array_push().
- En caso de que no existe el array lo crea.
- Es más óptimo.
$arreglo = ['a' => 1, 'b' => 2, 'c' => 3]; // Agregar un elemento: clave = 0, valor = 4 $arreglo[] = 4; // Agregar un elemento: clave = 'd', valor = 5 $arreglo['d'] = 5;
Función array_unshift
Se pueden agregar uno o varios elementos al inicio de un array.
$ordinales = ['tercero', 'cuarto', 'quinto']; //Agrega elementos al inicio de un array: array_unshift array_unshift($ordinales, 'primero', 'segundo');
Eliminar elementos
Para eliminar un elemento del array se puede usar las siguientes funciones:
Función unset
Elimina el elemento del array seleccionado, deja intactas las claves que no se han eliminado.
$arreglo = [10, 20, 30, 40, 50, 60, 70]; // Elimina el elemento con clave 2, valor = 30 unset($arreglo[2]);
Función array_shift
Extrae el elemento inicial del array, restableciendo las claves numéricas.
$arreglo = [10, 20, 30, 40, 50, 60, 70]; // Elimina al primer elemento, clave = 0 y valor = 10 array_shift($arreglo);
Función array_pop
Extrae el elemento final del array.
$arreglo = [10, 20, 30, 40, 50, 60, 70]; // Elimina el último elemento, clave = 6 y valor = 70 array_pop($arreglo);
Modificar un elemento
Las claves en un array son únicas, esto indica que si agrega un nuevo elemento con una clave existente lo que se logra es la sobrescritura. Para hacer esto se selecciona la clave y el nuevo valor a modificar el array.
$arreglo = ['a' => 1, 'b' => 2, 'c' => 3]; // Modificación del elemento con clave 'a' $arreglo['a'] = 100;
Modificaciones de array (sin recorrido)
PHP tiene un catálogo de funciones que permiten modificar u obtener resultados de los elementos que conforman un array, a partir de funciones ya establecidas que evitan el recorrido de cada elemento.
array_sum
Para obtener la sumatoria de los valores numéricos de un arreglo.
$numeros = [1, 2, 3, 4, 5]; // Imprime 15 array_sum($numeros);
array_product
Se obtiene el producto de los valores numéricos de un arreglo.
$numeros = [1, 2, 3, 4, 5]; // Imprime 120 array_product($numeros);
array_map
Permite obtener un nuevo arreglo a partir de una transformación del arreglo original.
function cubo($numero) { return pow($numero, 3); } $numeros = [1, 2, 3, 4, 5]; // Obtener el cubo de cada elemento del arreglo $cubos = array_map('cubo', $numeros); print_r($cubos);
Otra forma alternativa es utilizando funciones anónimas.
$numeros = [1, 2, 3, 4, 5]; // Obtener el cubo de cada elemento del arreglo $cubos = array_map( function ($numero) { return pow($numero, 3); }, $numeros ); print_r($cubos);
array_filter
Se obtiene un array a partir de una función que permite el filtrado de cada elemento del array original.
function esPar($numero) { return ($numero % 2 == 0); } $numeros = [1, 2, 3, 4, 5]; // Llamado a una función que filtra elementos de un array $pares = array_filter($numeros, 'esPar'); print_r($pares);
array_reduce
Permite obtener un valor escalar resultante de una función previa. Esta función debe establecerse de la siguiente manera:
function callback($carry, $item) { ... }
En este caso el primer argumento ($carry) de la función es un acumulador, mientras que el segundo ($item) es el valor del elemento en cada iteración.
$numeros = [1, 2, 3, 4, 5]; $sumatoriaPares = array_reduce($numeros, function($total, $item) { if ($item % 2 == 0) $total += $item; return $total; } ); var_dump($sumatoriaPares);
Otras funciones
https://gist.github.com/senquevila/b972f476479f4e14dc08e9f8c8cdc6e8