# Funciones Arrays (PHP)
# Básicas
## count
Cuenta los elementos de un array
```php=
<?php
$ages = [12,23,34];
echo count($ages); // 3
?>
```
## range
Crea un array en un rango determinado
```php=
<?php
$range = range(1,5);
print_r($range);
/*
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
*/
?>
```
## var_export
Muestra el array con sus claves (como print_r)
```php=
<?php
$ages = [12,23,34];
var_export($ages);
/*
Array
(
[0] => 12
[1]=> 23
[2] => 34
)
*/
?>
```
# Conversciones
## implode
Convierte un array en una cadena de texto
```php=
<?php
$ages = [12,23,34];
echo "[" . implode(",", $ages) . "]";
/*
* [12,23,34]
*/
?>
```
## explode
Convierte una string en un array
```php=
<?php
$ages = "12,23,34";
$agesArr = explode(",",$ages);
print_r($agesArr);
/*
Array
(
[0] => 12
[1] => 23
[2] => 34
)
*/
?>
```
## str_split
Convierte una string en un array, en la que cada elemento sera un carácter de la string
```php=
<?php
$ages = "12,23,34";
$agesArr = str_split($ages);
print_r($agesArr);
/*
Array
(
[0] => 1
[1] => 2
[2] => ,
[3] => 2
[4] => 3
[5] => ,
[6] => 3
[7] => 4
)
*/
?>
```
## preg_split
Convierte una string en un array con expresiones regulares
```php=
<?php
$ages = "12,23,34";
$agesArr = preg_split("/[\s,]+/",$ages);
print_r($agesArr);
/*
Array
(
[0] => 12
[1] => 23
[2] => 34
)
*/
?>
```
# Inserción
## array_unshit
Añade elementos al principio del Array
```php=
<?php
$ages = [12,23,34];
array_unshift($ages, 13);
echo "[" . implode(",", $ages) . "]";
/*
* [13,12,23,34]
*/
?>
```
## array_push
Añade elementos al final del Array
```php=
<?php
$ages = [12,23,34];
array_push($ages, 13);
echo "[" . implode(",", $ages) . "]";
/*
* [12,23,34,13]
*/
?>
```
## array_pad
Rellena un array a la longitud especificada con un valor,
no modifica el original, devuelve una copia con el resultado.
```php=
<?php
$ages = [12,23,34];
$copy = array_pad($ages, 9, "edades");
print_r($copy);
/*
Array
(
[0] => 12
[1] => 23
[2] => 34
[3] => edades
[4] => edades
[5] => edades
[6] => edades
[7] => edades
[8] => edades
)
*/
?>
```
# Extracción
## array_shift
Elimina el elemento del principio y lo devuelve
```php=
<?php
$ages = [12,23,34];
echo array_shift($ages) . "\n";
echo "[" . implode(",", $ages) . "]";
/*
* 12
* [23,34]
*/
?>
```
## array_pop
Elimina el elemento del final y lo devuelve
```php=
<?php
$ages = [12,23,34];
echo array_pop($ages) . "\n";
echo "[" . implode(",", $ages) . "]";
/*
* 34
* [12,23]
*/
?>
```
## unset
Destruye una o más variables especificadas (No es exclusivo de arrays)
```php=
<?php
$ages = [12,23,34];
unset($ages[1]);
echo "[" . implode(",", $ages) . "]";
/*
* 12
* [12,34]
*/
?>
```
# Inspección de Arrays
## current
Devuelve el valor del elemento al que actualmente señala el
puntero. Si no hay ningún elemento devuelve FALSE
```php=
<?php
$ages = [12,23,34];
echo current($ages);
/*
* 12
*/
?>
```
## key
Devuelve la clave a la que señala el puntero
```php=
<?php
$ages = [12,23,34];
echo key($ages);
/*
* 0
*/
?>
```
## next
Mueve el puntero al siguiente elemento del array y devuelve su valor. Si el elemento actual es el último, next devuelve false.
```php=
<?php
$ages = [12,23,34];
echo next($ages);
/*
* 23
*/
?>
```
## prev
Mueve el puntero al elemento anterior del array y devuelve su valor. Si el elemento actual es el primero, prev devuelve false.
```php=
<?php
$ages = [12,23,34];
echo next($ages) ."\n";
echo prev($ages);
/*
* 23
* 12
*/
?>
```
## reset
Coloca el puntero en el primer elemento del array y devuelve su valor. Si no hay ningún elemento devuelve false.
```php=
<?php
$ages = [12,23,34];
echo next($ages) ."\n";
echo reset($ages);
/*
* 23
* 12
*/
?>
```
## end
Coloca el puntero en el último elemento y devuelve su valor.
```php=
<?php
$ages = [12,23,34];
echo end($ages);
/*
* 34
*/
?>
```
# Comprobación
## isset
Determina si una variable está definida y no es null, devolviendo 1(true) si lo está y 0(false) en caso contrario (No exclusiva de los arrays)
```php=
<?php
$ages = [12,23,34];
echo isset($ages[1]);
/*
* 1
*/
?>
```
## array_key_exists
Devuelve TRUE si la clave está creada en el array
```php=
<?php
$ages = [12,23,34];
echo array_key_exists(1,$ages);
/*
* 1
*/
?>
```
## is_array
Devuelve TRUE si la variable es un array
```php=
<?php
$ages = [12,23,34];
echo is_array($ages);
/*
* 1
*/
?>
```
## array_search
Busca un valor determinado en un array y devuelve la primera clave correspondiente en caso de éxito.
```php=
<?php
$ages = [12,23,34];
echo array_search(34,$ages);
/*
* 2
*/
?>
```
# Varios
## shuffle
Mezcla los elementos de un array de forma aleatoria
```php=
<?php
$ages = [12,23,34];
shuffle($ages);
echo "[" . implode(",", $ages) . "]";
/*
* [34,12,23]
*/
?>
```
## array_merge
Fusiona dos o más arrays, devolviendo el resultado de la fusión
```php=
<?php
$ages = [12,23,34];
$ages1 = [12,23,34];
$ages2 = [12,23,34];
$merge = array_merge($ages, $ages1, $ages2);
echo "[" . implode(",", $merge) . "]";
/*
* [12,23,34,12,23,34,12,23,34]
*/
?>
```
## array_reverse
Devuelve un array con los elementos en orden inverso
```php=
<?php
$ages = [12,23,34];
$agesReverse = array_reverse($ages);
echo "[" . implode(",", $agesReverse) . "]";
/*
* [34,23,12]
*/
?>
```
## array_unique
Elimina los valores duplicados de un array
```php=
<?php
$ages = [12,12,34];
$agesUnique = array_unique($ages);
echo "[" . implode(",", $agesUnique) . "]";
/*
* [12,34]
*/
?>
```
## array_slice
Devuelve la secuencia de elementos delarray tal y como se especifica en el primer y segundo parámetro.
Si el primer parámetro es negativo, se comensara por el final.
Si el seguno parámetro es negativo, se saltara los n ultimos elementos
```php=
<?php
$ages = [12,23,34,23,24,25,26,27];
$subAges = array_slice($ages,0,1);
$subAgesFirstNegatiove = array_slice($ages,-2,2);
$subAgesSecondNegative = array_slice($ages,2,-3);
// print_r($subAges);
/*
Array
(
[0] => 12
)
*/
// print_r($subAgesFirstNegatiove);
/*
Array
(
[0] => 26
[1] => 27
)
*/
print_r($subAgesSecondNegative);
/*
Array
(
[0] => 34
[1] => 23
[2] => 24
)
*/
?>
```
## array_flip
Intercambia las claves por lo valores
```php=
<?php
$ages = [12,23,34];
$agesArr = array_flip($ages);
print_r($agesArr);
/*
Array
(
[12] => 0
[23] => 1
[34] => 2
)
*/
?>
```
## array_chunk
Divide un array en varios arrays según la longitud que le pasemos como segundo parámetro. Opcionalmente se le puede pasar otro tercer parámetro booleano si queremos que se conserven las claves.
```php=
<?php
$ages = [12,23,34];
$agesArr = array_chunk($ages,1);
print_r($agesArr);
/*
Array
(
[0] => Array
(
[0] => 12
)
[1] => Array
(
[0] => 23
)
[2] => Array
(
[0] => 34
)
)
*/
?>
```
# Orden
Estas funciones modifican el array original.
## asort
Ordena los valores de un array en orden y mantiene la asociación de índices.
```php=
<?php
$people = [
"Juan" => 25,
"Manuel" => 23,
"Pepe" => 12,
"Perico" => 32
];
asort($people);
print_r($people)
/*
Array
(
[Pepe] => 12
[Manuel] => 23
[Juan] => 25
[Perico] => 32
)
*/
?>
```
## arsort
Ordena los valores de un array en orden inverso y mantiene la asociación de índices.
```php=
<?php
$people = [
"Juan" => 25,
"Manuel" => 23,
"Pepe" => 12,
"Perico" => 32
];
arsort($people);
print_r($people)
/*
* Array
(
[Perico] => 32
[Juan] => 25
[Manuel] => 23
[Pepe] => 12
)
*/
?>
```
## ksort
Ordena un array por clave, manteniendo la correlación entre la clave y los datos.
```php=
<?php
$people = [
"Pepe" => 12,
"Perico" => 32,
"Juan" => 25,
"Manuel" => 23
];
ksort($people);
print_r($people)
/*
* Array
(
[Juan] => 25
[Manuel] => 23
[Pepe] => 12
[Perico] => 32
)
*/
?>
```
## krsort
Ordena un array en orden inverso por clave, manteniendo la correlación entre la clave y los datos.
```php=
<?php
$people = [
"Pepe" => 12,
"Perico" => 32,
"Juan" => 25,
"Manuel" => 23
];
krsort($people);
print_r($people)
/*
* Array
(
[Perico] => 32
[Pepe] => 12
[Manuel] => 23
[Juan] => 25
)
*/
?>
```
## sort
Ordena los valores de un array de menor a mayor, perdiendo las claves si lo usamos con un array asociativo.
```php=
<?php
$people = [
"Pepe" => 32,
"Juan" => 25
];
sort($people);
echo "[" . implode(",", $people) . "]";
// [25,32]
?>
```
## usort
Ordena los valores de un array en base a la función que le pasemos como segundo parámetro. Al igual que el sort, pierde las claves si es un array asociativo.
```php=
<?php
$people = [
"Pepe" => 23,
"Juan" => 12
];
usort($people, function ($a, $b) {
return $a <=> $b;
});
echo "[" . implode(",", $people) . "]";
// [12,23]
?>
```
# Extra
## Operador de nave espacial
En php podemos hacer uso de un operador especial **'<=>'**, el operador de nave espacial. Devuelve -1, 0 o 1 cuando $a es respectivamente menor, igual, o mayor que $b.
###### tags: `Platzi` `DSW` `PHP`