- Maniuplación de claves y valores
$datos = ["a" => "manzana", "b" => "pera", "c" => "uva"];
$valores = array_values($datos); // ["manzana","pera","uva"]
$claves = array_keys($datos); // ["a","b","c"]
$intercambio = array_flip($datos); // ["manzana"=>0,"pera"=>1,"uva"=>2]
$existe = in_array("pera", $datos); // true
$posicion = array_search("pera", $datos); // "b"
$claveExiste = array_key_exists("b", $datos); // true
$isset = isset($datos["b"]); // true
- Puntero interno del array
current($datos); // "manzana"
pos($datos); // "manzana" (alias)
key($datos); // "a"
next($datos); // avanza a "pera", devuelve "pera"
prev($datos); // retrocede a "manzana"
end($datos); // se coloca en "uva"
reset($datos); // vuelve al primer elemento
each($datos); // devuelve [1=>"manzana","value"=>"manzana",0=>"a","key"=>"a"] y avanza
list($k, $v) = each($datos); // $k = "b", $v = "pera"
- Conversión entre arrays y variables
$info = ["nombre" => "Juan", "edad" => 25];
extract($info);
echo $nombre; // "Juan"
echo $edad; // 25
$nom = "Ana";
$eda = 30;
$nuevoArray = compact("nom", "eda"); // ["nom"=>"Ana","eda"=>30]
- Segmentación y relleno
$lista = [10, 20, 30, 40, 50];
$trozo = array_slice($lista, 1, 3); // [20,30,40] (sin modificar original)
$remplazado = array_splice($lista, 1, 3, ["nuevo1", "nuevo2"]);
// $remplazado = [20,30,40]; $lista ahora = [10,"nuevo1","nuevo2",50]
$dividido = array_chunk($lista, 2, true); // [[0=>10,1=>"nuevo1"], [2=>"nuevo2",3=>50]]
$rellenado = array_pad($lista, 6, "x"); // [10,"nuevo1","nuevo2",50,"x","x"]
- Pilas (stack)
$pila = [];
array_push($pila, "rojo", "verde"); // $pila = ["rojo","verde"], devuelve 2
$ultimo = array_pop($pila); // $ultimo = "verde", $pila = ["rojo"]
- Colas (queue)
$cola = ["primero", "segundo", "tercero"];
$saliente = array_shift($cola); // $saliente = "primero", $cola = ["segundo","tercero"]
array_unshift($cola, "nuevo", "otro"); // $cola = ["nuevo","otro","segundo","tercero"]
- Funciones de callback
$nums = [1, 2, 3, 4];
// array_walk
array_walk($nums, function(&$v, $k) { $v = $v * 2; });
// $nums = [2,4,6,8]
// array_map
$dobles = array_map(function($n) { return $n * 2; }, $nums);
// $dobles = [4,8,12,16]
// array_filter
$pares = array_filter($nums, function($n) { return $n % 2 == 0; });
// $pares = [1=>4, 3=>8] (índices se mantienen)
// array_reduce
$suma = array_reduce($nums, function($carry, $item) { return $carry + $item; }, 0);
// 24
- Ordenación
Por valor (sin conservar claves)
$numeros = [3, 1, 4, 1, 5];
sort($numeros); // [1,1,3,4,5]
rsort($numeros); // [5,4,3,1,1]
usort($numeros, function($a, $b) { return $a <=> $b; }); // [1,1,3,4,5] (orden ascendente)
Por valor (conservando claves)
$edades = ["Ana"=>30, "Luis"=>25, "Carlos"=>35];
asort($edades); // ["Luis"=>25, "Ana"=>30, "Carlos"=>35]
arsort($edades); // ["Carlos"=>35, "Ana"=>30, "Luis"=>25]
uasort($edades, function($a, $b) { return $a <=> $b; }); // igual que asort
Por clave
$diccionario = ["z"=>1, "a"=>2, "m"=>3];
ksort($diccionario); // ["a"=>2, "m"=>3, "z"=>1]
krsort($diccionario); // ["z"=>1, "m"=>3, "a"=>2]
uksort($diccionario, function($a, $b) { return strcmp($a, $b); }); // ["a", "m", "z"]
Orden natural
$archivos = ["img10.png", "img2.png", "img1.png"];
natsort($archivos); // ["img1.png","img2.png","img10.png"]
natcasesort($archivos); // similar pero insensible a mayúsculas
- Operaciones aritméticas y cmobinación
Suma de elementos
$lista = [1, 2, 3, 4];
$total = array_sum($lista); // 10
Unión y fusión
$a = ["color"=>"rojo", 0=>"a"];
$b = ["color"=>"azul", "talla"=>"M", 0=>"b"];
$union = $a + $b; // ["color"=>"rojo", 0=>"a", "talla"=>"M"]
$fusion = array_merge($a, $b); // ["color"=>"azul", 0=>"a", "talla"=>"M", 1=>"b"]
$recursiva = array_merge_recursive(
["fruta"=>["manzana","pera"]],
["fruta"=>["uva"]]
);
// ["fruta"=>["manzana","pera","uva"]]
Diferencias
$x = [1, 2, 3, 4];
$y = [3, 4, 5, 6];
$diferencia = array_diff($x, $y); // [1,2]
$asoc1 = ["a"=>1, "b"=>2];
$asoc2 = ["a"=>1, "c"=>3];
$diffAsoc = array_diff_assoc($asoc1, $asoc2); // ["b"=>2]
Intersecciones
$inter = array_intersect($x, $y); // [3,4]
$interAsoc = array_intersect_assoc($asoc1, $asoc2); // ["a"=>1]
- Otras funcoines útiles
// Crear rangos
$nums = range(1, 5); // [1,2,3,4,5]
$letras = range('a', 'd'); // ['a','b','c','d']
// Eliminar duplicados
$dup = [1, 1, 2, 2, 3];
$unicos = array_unique($dup); // [1,2,3]
// Invertir orden
$invertido = array_reverse($dup, true); // [1=>1, 0=>1, 3=>2, 2=>2, 4=>3] (preserva claves)
// Selección aleatoria
$colores = ["rojo","verde","azul","amarillo"];
$aleatorio = array_rand($colores, 2); // índice(s) aleatorio(s)
// Mezclar
shuffle($colores); // reordena el array original
// Estadísticas de valores
$votos = ["rojo","azul","rojo","verde","azul","rojo"];
$frecuencia = array_count_values($votos); // ["rojo"=>3,"azul"=>2,"verde"=>1]
// Producto
$factores = [2, 3, 4];
$producto = array_product($factores); // 24