PHP - Как рекурсивно удалить пустые записи массива?

Мне нужно удалить пустые записи в многоуровневых массивах. Пока я могу удалить записи с пустыми подмассивами, но не пустые массивы... запутался, я тоже... Думаю, код поможет лучше объяснить...

<?php

/**
 * 
 * This function remove empty entries on arrays
 * @param array $array
 */
function removeEmptysFromArray($array) {

    $filtered = array_filter($array, 'removeEmptyItems');
    return $filtered;
}

/**
 * 
 * This is a Callback function to use in array_filter()
 * @param array $item
 */
function removeEmptyItems($item) {

    if (is_array($item)) {
        return array_filter($item, 'removeEmptyItems');
    }

    if (!empty($item)) {
        return true;  
    }
}


$raw = array(
    'firstname' => 'Foo',
    'lastname'  => 'Bar',
    'nickname' => '',
    'birthdate' => array( 
        'day'   => '',
        'month' => '',
        'year'  => '',
    ),
    'likes' => array(
        'cars'  => array('Subaru Impreza WRX STi', 'Mitsubishi Evo', 'Nissan GTR'),
        'bikes' => array(),
    ),
);

print_r(removeEmptysFromArray($raw));

?>

Хорошо, этот код удаляет "ник", "дату рождения", но не удаляет "велосипеды", которые имеют пустой массив.

Мой вопрос в том... Как удалить запись "bikes"?

Best Regards,

Sorry for my english...

13
задан André 8 October 2011 в 11:40
поделиться