Bienvenidos sean a este post, hoy veremos una funcion para los arrays.
Esta funcion nos permite filtrar valores de un array en base a una funcion de callback, veamos primero su sintaxis:
array_filter(array[, funcion, flag]);
En esta funcion el unico valor obligatorio es el array a filtrar, el segundo argumento que es la funcion de callback no es obligatoria porque sino la informamos la funcion automaticamente filtrara todos los valorres que puedan representar un false, y el ultimo es para indicarle como queremos hacer el filtrado y al no informarlo toma el valor predeterminado de 0 y este pasara solamente el valor a la funcion de callback, veamos los dos posibles valores que podemos pasar:
ARRAY_FILTER_USE_KEY, sera para indicarle que use solamente las clavesARRAY_FILTER_USE_BOTH, sera para indicarle que use ambos valores
Para entender mejor el concepto vamos a aplicarlo en una serie de ejemplos, para ello primero crearemos un archivo con el nombre de array.php y le agregaremos el siguiente codigo:
array.php
<?php
function impar($valor)
{
return $valor & 1;
}
function par($valor)
{
return !($valor & 1);
}
function pasada($arreglo)
{
foreach($arreglo as $valor)
print "Valor: " . $valor . "\n";
}
$valores = array(0,1,2,3,4,5,6,7,8,9);
$pares = array_filter($valores, "par");
$impares = array_filter($valores, "impar");
print("Valores pares:\n");
pasada($pares);
print("Valores impares:\n");
pasada($impares);
?>
Este sera nuestro codigo base, primero definiremos dos funciones que se encargaran de devolvernos si el valor pasado como argumento es impar o par, estos seran los verdaderos encargados de hacer el filtro, la tercera funcion es la encargada de mostrar el array que le pasemos como argumento, simplemente lo toma y muestra todos los valores en pantalla,, esto lo hicimos asi para no tener que repetir el bucle cada vez que lo usamos, ,despues definiremos un array simple donde contara con valores simples, y lo siguiente sera definir dos variables donde almacenaremos el resultado de aplicar la funcion pero en el primero aplicaremos la funcion par para los numeros pares y en la siguiente para los numeros impares, para finalmente mostrar el resultado de ambos mediante la funcion encargada de pasar por cada uno de ellos, veamos como es la salida:
$ php array.php
Valores pares:
Valor: 0
Valor: 2
Valor: 4
Valor: 6
Valor: 8
Valores impares:
Valor: 1
Valor: 3
Valor: 5
Valor: 7
Valor: 9
$
Vemos como nos hizo el filtrado de manera perfecta, ahora volvamos a ese codigo y modifiquemos al array $valores de la siguiente manera:
$valores = array(0,2,1,3,5,4,7,6,9,8);
Simplemente entreveramos un poco los valores para que se vea mejor la siguiente modificacion, esta sera sobre las dos variables donde filtraremos los valores que las cambiaremos de la siguiente forma:
$pares = array_filter($valores, "par",ARRAY_FILTER_USE_KEY);
$impares = array_filter($valores, "impar",ARRAY_FILTER_USE_KEY);
En este caso solamente agregamos el tercer argumento y le pasamos la constante encargada de indicarle que no utilice los valores para filtrar sino las claves, el resto del codigo se mantiene igual, veamos como es la salida ahora:
$ php array.php
Valores pares:
Valor: 0
Valor: 1
Valor: 5
Valor: 7
Valor: 9
Valores impares:
Valor: 2
Valor: 3
Valor: 4
Valor: 6
Valor: 8
$
Observen que es la salida es muy distinta y en este caso los valores no son todos correctos, uno en cada caso si, pero si lo seran los valores de cada clave, recuerden que si no pasamos el tercer argumento tomas los valores solamente, vamos a ver el ultimo caso y para ello cambiaremos el codigo de la siguiente manera:
<?php
$valores = array('mhm',false,-1,null,'','0',0);
$filtrado = array_filter($valores);
foreach($filtrado as $valor)
print "Valor: " . $valor . "\n";
?>
En este caso eliminamos todas las funciones que no son mas necesarias, despues modificamos el array con los valores y dejamos una sola variable que recibira los valores filtrados por la funcion pero esta vez sin ninguna funcion o constante, para finalmente mostrar los valores obtenidos en la ultima variable, veamos como es su salida:
$ php array.php
Valor: mhm
Valor: -1
$
Si recuerdan lo que comentamos al comienzo cuando no pasemos ninguna funcion de callback la funcion filtrara automaticamente todos los valores que equivalen a false, y como estos valores son los unicos que no cumplen esta condicion son los que pasaron.
En resumen, hoy hemos visto array_filter, que es, para que sirve, como se utiliza y una serie de ejemplos para ver sus diferentes conductas dependiendo de los argumentos que pasemos, espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
