Guía completa de funciones para arrays en PHP

  1. 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

  1. 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"

  1. 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]

  1. 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"]

  1. Pilas (stack)

$pila = [];
array_push($pila, "rojo", "verde");  // $pila = ["rojo","verde"], devuelve 2
$ultimo = array_pop($pila);           // $ultimo = "verde", $pila = ["rojo"]

  1. 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"]

  1. 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

  1. 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

  1. 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]

  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

Etiquetas: PHP Arrays funciones array_walk array_map

Publicado el 9-21 16:54