Удалите пустые элементы массива с помощью array_filter с функцией обратного вызова

Я пытаюсь удалить пустые элементы в массиве с помощью функции array_filter.

Когда я использую внешний обратный вызов следующим образом:

function callback($a) { return !empty($a);}
$arr = array("abc",'','ghi');
$res = array_filter($arr, "callback");

работает как ожидалось.

Но если я использую array_filter вот так:

$arr = array("abc",'','ghi');
$res = array_filter($arr, function($a) { return !empty($a);});

Ошибка с ошибкой:

PHP Parse error:  syntax error, unexpected T_FUNCTION in test.php on line 2

Что я делаю неправильно?

Ответ 1

Кажется, что вы используете версию PHP, которая не поддерживает анонимные функции (доступно с PHP 5.3.0).

Но array_filter уже фильтрует пустые значения, если вы не указали функцию обратного вызова:

Если нет callback, все записи input равны FALSE (см. преобразование в boolean) будет удалено.

Ответ 2

Это хорошо работает с PHP5. Проверьте свою версию PHP и при необходимости обновите.