Me llegó esta pregunta a través de twitter:
Veamos el arreglo en mayor detalle:
Por lo que se ve, se trata de un array de arrays. El primer índice es por número y la segunda dimensión tiene índices string y, viendo el contenido del mismo entiendo que se trata del resultado de alguna consulta a una base de datos (Siendo que los elementos parecen tener la misma estructura y especialmente al haber un elemento llamado «id»).
Muy bien, entonces el objetivo sería obtener sólo aquellos elementos en los cuales la columna «condial_39» vale 1, en este caso sería el array completo, pero obviamente este podría no ser el caso.
Se me ocurren diferentes formas de lograr este objetivo:
A la vieja usanza
Simplemente se trata de hacer una recorrida del arreglo e ir recolectando los elementos buscados:
<?php $r = []; foreach ( $array as $k => $v ) { if ( $v['condial_39'] == 1 ) { $r[$k] = $v; } }
Al final de esta recorrida tendremos el resultado buscado en el arreglo $r.
Nada espectacular pero da el resultado buscado.
Usando un poco de programación funcional
Ahora, viendo la pregunta original (que pide qué función de php se puede usar), se me ocurre un modo algo más elaborado, pero ciertamente más claro (y tal vez más eficiente):
<?php $r = array_filter( $a, function( $e ) { return $e['condial_39'] == 1; });
Aquí estamos usando la función array_filter en combinación con una función anónima que encapsula el criterio de filtro.
Al fin de cuentas diría que es cuestión de gustos (Yo personalmente elijo la segunda opción).
Ejemplo completo
El código:
<?php $a = [ 1 => [ 'id' => '23432aasasd', 'condial_39' => 1, 'nombre' => 'Juan' ], 2 => [ 'id' => '26345awq2sd', 'condial_39' => 0, 'nombre' => 'Pedro'], ]; $r = array_filter( $a, function( $e ) { return $e['condial_39'] == 1; }); print_r($r); echo PHP_EOL;
El resultado:
¿Tenés alguna pregunta para hacerme? Dejá un comentario, mandame un twit o un correo
- ¿Cualquier aplicación PHP se puede dockerizar? - 21/08/2023
- Por qué NO deberías usar XAMPP - 14/08/2023
- «Mi sitio funcionaba bien hasta que el hosting actualizó PHP» - 09/08/2023