Что делает 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 (см. преобразование в логическое), будут удалены".