Что делает array_filter без обратного вызова?
Я просто натолкнулся на этот код:
array_filter( array_map('intval', $array) );
Кажется, возвращают все записи $array, преобразованные в int, где число > 0
Однако на странице руководства я не вижу, что это определено. Предполагается вернуть значение массива, если функция обратного вызова имеет значение true. Но здесь нет функции обратного вызова.
Сбивание с толку также заключается в том, что функция обратного вызова является необязательной на странице руководства: http://php.net/manual/en/function.array-filter.php
Ответы
Ответ 1
Удаляет пустые или эквивалентные значения из массива:
Пример # 2 array_filter() без обратного вызова
$entry = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);
print_r(array_filter($entry));
Результат
Array
(
[0] => foo
[2] => -1
)
Смотрите оригинальную документацию из руководства.
Ответ 2
Если вы прочтете чуть дальше на странице, с которой вы связались, вы обнаружите: "Если обратный вызов не предоставляется, все записи массива, равные FALSE (см. преобразование в логическое), будут удалены".