Filtrar los elementos de un array con php y array_filter()

Filtrar elementos de un array con php y array_filter

Vamos a ver como podemos filtrar los valores de un array con PHP con la función array_filter() de PHP podemos filtrar los valores de un array para así mostrar, solo lo que nos interesa.

Por ejemplo vamos a mostrar solo los números pares que hay en un array:

Aquí en la variable $pairs, nos guardará tan solo los números pares.

Podríamos incluso aplicar un print_r o var_dump a la función array_filter()  si no necesitamos guardar el resultado en una variable.

O ya sea para filtrar un listado de archivos de una conexión ftp.

Como veis de una forma muy sencilla podemos filtrar los arrays y devolver otro array con tan solo una función.

Si la función a realizar, fuera mucho más compleja, podríamos llamarla como una función sin problemas de la siguiente manera:

Espero que os sirva para vuestros códigos.

Y recordad! No olvidéis comentar! Vuestro código y en el Blog 😉

Comparte si te ha gustado:
Share on Facebook
Facebook
0Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Share on Tumblr
Tumblr
0Digg this
Digg
6 Comments

    JOSE BORGES

    Bien explicado de forma sencilla.. gracias por compartir..

      Oyagum

      Gracias a ti por comentar. Y me alegro que te haya servido de ayuda;)

    Jose

    Cool!

    Como te lo montarias si tuvieses un array multidimensional y debieses separar por meses por ejemplo?
    Gracias!!!

      Oyagum

      Buenas Jose,

      Primero de todo gracias por leerme y por comentar. No acabo de ver bien bien el problema que tienes, y me gustaría ayudarte, me lo podrías explicar un poco más?

      Te lo agradecería y miraré de ayudarte con lo que sea.

      Un saludo!

        Jose

        Que tal Oyagum!

        No pues nada, sólo me preguntaba la manera más óptima de teniendo un array de datos del palo

        array(3) {
        [0]=> array(10) { …. [5]=> string(10) «2020-09-05» [«Fecha_Entrada»]=> string(10) «2020-09-05» …..}
        [1]=> array(10) { … [5]=> string(10) «2020-09-05» [«Fecha_Entrada»]=> string(10) «2020-09-05″… }
        [2]=> array(10) { …. [5]=> string(10) «2020-09-05» [«Fecha_Entrada»]=> string(10) «2020-09-05″…. }
        }

        Con muchos mas campos claro y tal, pero siendo la clave para mi pregunta, la fecha de entrada, me preguntaba cual sería la mejor manera de tener los elementos del array por mes o tal vez por x fecha que le pase y sacar un sumatorio por mes etc.

        Nada que llegué por acá viendo como optimizar el obtener x elementos de un array y di con tu web y tu post 🙂

        Gracias por responder so fast!

          Oyagum

          Creo que lo mejor en tu caso sería utilizar la función array_walk() de PHP, almenos lo que pienso, he visto aquí un ejemplo:

          https://3v4l.org/NvLB8

          Porqué aquí al final lo que hacemos es filtrar un array en busca de algo en concreto, así que lo único así rápido que podíamos hacer es filtrar por esa fecha y luego que con eso trabajes.

          Lo único que veo que podrías llegar a hacer es algo como esto:


          <?php
          $array = array(
          array('date' => '2020-02-20', 'cash' => '10'),
          array('date' => '2020-02-28', 'cash' => '15'),
          array('date' => '2020-03-19', 'cash' => '20'),
          );

          $dateToFilter = '2020-02';
          $totalSum = 0;

          $result = array_filter($array, function ($item) use ($dateToFilter) {
          global $totalSum;
          if (stripos($item['date'], $dateToFilter) !== false) {
          $totalSum = $totalSum + $item['cash'];
          }
          return false;
          });

          echo $totalSum;
          ?>

          Pero yo creo que te sirve mejor la función array_walk.

          Bueno espero haberte servido de ayuda, un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*
*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.