PHP Arrays Finding Elements That Pass a Certain Test - Supercoders | Web Development and Design | Tutorial for Java, PHP, HTML, Javascript PHP Arrays Finding Elements That Pass a Certain Test - Supercoders | Web Development and Design | Tutorial for Java, PHP, HTML, Javascript

Breaking

Post Top Ad

Post Top Ad

Sunday, May 19, 2019

PHP Arrays Finding Elements That Pass a Certain Test

PHP Arrays




Finding Elements That Pass a Certain Test

Problem


You want to locate entries in an array that meet certain requirements.


Solution


Use a foreach loop:

             $movies = array(/*...*/);

             foreach ($movies as $movie) {
                       if ($movie['box_office_gross'] < 5000000) { $flops[] = $movie; }
             }

Or array_filter():

             $movies = array(/* ... */);

             $flops = array_filter($movies, function ($movie) {
                       return ($movie['box_office_gross'] < 5000000) ? 1 : 0;
             });

Discussion

The foreach loops are simple: you iterate through the data and append elements to the
return array that match your criteria.

If you want only the first such element, exit the loop using break:

             $movies = array(/*...*/);
             foreach ($movies as $movie) {
                       if ($movie['box_office_gross'] > 200000000) { $blockbuster = $movie; break; }
             }

You can also return directly from a function:

             function blockbuster($movies) {
                       foreach ($movies as $movie) {
                               if ($movie['box_office_gross'] > 200000000) { return $movie; }
                       }
             }

With array_filter(), however, you first create an anonymous function that returns true for values you want to keep and false for values you don’t. Using array_filter(), you then instruct PHP to process the array as you do in the foreach.

It’s impossible to bail out early from array_filter(), so foreach provides more flexibility and is simpler to understand. Also, it’s one of the few cases in which the built-in PHP function doesn’t clearly outperform user-level code.


No comments:

Post a Comment

Post Top Ad