Filtrado con 'array_filter'
Parte de la sección Lógica y Flujo del Journey de PHP de Coddy. Lección 41 de 68.
La función array_filter() está diseñada para crear un nuevo array que contenga únicamente los elementos que cumplen criterios específicos. A diferencia de array_map(), que transforma cada elemento, array_filter() conserva selectivamente los elementos según si superan una prueba.
Cuando se usa sin una función de devolución de llamada, array_filter() elimina automáticamente todos los valores «vacíos» de un array. PHP considera que varios valores están vacíos: false, null, 0, cadenas vacías "" y arrays vacíos.
<?php
$mixedData = ["hello", 0, "world", false, null, "PHP", ""];
$cleanedData = array_filter($mixedData);
// Resultado: ["hello", "world", "PHP"]
?>Este comportamiento hace que array_filter() sea extremadamente útil para limpiar matrices de datos. La matriz original permanece sin cambios y obtienes una nueva matriz con solo los valores significativos. Esto resulta especialmente útil al procesar datos introducidos por el usuario o al trabajar con datos que podrían contener valores vacíos no deseados.
Desafío
FácilRecibirás una entrada: una lista de respuestas de una encuesta separadas por comas que contiene varios tipos de datos, incluidos números, cadenas vacías, ceros y respuestas de texto. La entrada tendrá el formato yes,0,,no,5,,true,false,answer.
Lee la entrada, convierte los valores separados por comas en un array, usa array_filter() sin una función de devolución de llamada para eliminar todos los valores vacíos e imprime cada valor restante en una línea separada, en el orden en que aparecen.
Recuerda que array_filter() sin una función de devolución de llamada elimina automáticamente los valores que PHP considera vacíos: false, null, 0, las cadenas vacías "" y los arrays vacíos.
Formato de entrada: Una línea que contiene valores separados por comas (ejemplo: yes,0,,no,5,,true,false,answer)
Salida esperada: Cada valor no vacío se imprime en una línea separada, en el orden en que aparece en el array filtrado
Pruébalo tú mismo
<?php
// Leer la entrada
$input = trim(fgets(STDIN));
// Convertir los valores separados por comas en un array
$responses = explode(',', $input);
// TODO: Escribe tu código debajo
// Usa array_filter() para eliminar los valores vacíos e imprimir cada valor restante
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Funciones avanzadas
Funciones anónimasClosures y 'use'Funciones de flechaFunciones callbackUso de 'call_user_func'Funciones variablesPaso por referenciaFunciones recursivasResumen: Miscelánea de funciones4Arreglos multidimensionales
Crear un arreglo 2DAcceder a elementos de un arreglo 2DModificar elementos de un arreglo 2DIterar con bucles anidadosArreglos asociativos 2DResumen: Ejercicio de cuadrícula simple2Manipulación avanzada de arrays
Agregar con 'array_push'Eliminar con 'array_pop'Agregar con 'array_unshift'Eliminar con 'array_shift'Fusionar arrays indexadosFusionar arrays asociativosExtraer con 'array_slice'Valores con 'in_array'Claves con 'array_search'Resumen: Ejercicio de Playlist3Ordenar Arrays
Ordenar arrays indexados de forma ascendenteOrdenar arrays indexados de forma descendenteOrdenar arrays asociativos por valorOrdenar arrays asociativos por claveOrdenación por orden naturalOrdenación personalizada con 'usort'Resumen: Ordenar tablas de clasificación6Funciones de array de orden superior
Transformación con 'array_map''array_map' con funciones personalizadasFiltrado con 'array_filter''array_filter' con funciones personalizadasReducción con 'array_reduce'Recorrido con 'array_walk'Resumen: Procesamiento de datosPractica por tu cuenta: Compilador de PHP online