Remove empty items from a multidimensional array in PHP



The following function removes empty items from a (multidimensional) array and returns the resulting array. Please notice that the use of recursion is required because of the array can be of an unknown number of levels, that is, arrays inside the cells of the array, and so on.

function array_non_empty_items($input) {
    // If it is an element, then just return it
    if (!is_array($input)) {
      return $input;
    }
    $non_empty_items = array();
    foreach ($input as $key => $value) {
      // Ignore empty cells
      if($value) {
        // Use recursion to evaluate cells 
        $non_empty_items[$key] = array_non_empty_items($value);
      }
    }
    // Finally return the array without empty items
    return $non_empty_items;
  }


By example, if we pass the following array to the function:

  $MasterArray = array(
      ‘country’ => ‘CO’,
      ‘region’ => ”,
      ‘city’ => ”,
      ‘features’ => array(
          ‘home’ => array(‘garden’, ‘bedrooms’=>3),
          ‘beach’ => array(‘no_more_than’=>30, ‘yachts_rental’),
          ‘supermarkets’ => ”,
          ‘discotheque’ => ”
       )
    );

Then we will obtain an array without empty items, like this:

$MasterArray = array(
    ‘country’ => ‘CO’,
    ‘ features’ => array(
    ‘home’ => array(‘garden’, ‘ bedrooms’=>3),
    ‘ beach’ => array(‘no_more_than’=>30, ‘ yachts_rental’)
 )
);









1 comments :