Подтвердить что ты не робот

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

Рассмотрим:

[name] => Array ( [1] => name#1
                  [2] => name#2
                  [3] => name#3
                  [4] => name#4
                  [5] =>
                  [6] =>
                  [7] =>
                  [8] =>
                  [9] =>
                )


$name = $_POST['name']

Я хочу, чтобы результат был 4.

count ($name) = 9
count (isset($name)) = 1
count (!empty($name)) = 1

Я думаю, что последний выполнит то, что мне нужно, но это не так (пустые записи из незаполненных входов в форме).

4b9b3361

Ответ 1

Вы можете использовать array_filter только для сохранения значений, которые не являются пустым в массиве, например:

array_filter($array);

Или, если ваша функция фильтра более сложна:

array_filter($array, function($x) { return !empty($x); });
# function(){} only works in in php >5.3, otherwise use create_function

Итак, считать только непустым:

count(array_filter($array));

Ответ 2

count(array_filter($name));

Ответ 3

Здесь простая функция вычисления:

function non_empty(array $a) {
    return array_sum(array_map(function($b) {return empty($b) ? 0 : 1;}, $a));
}

Это сохранит индексы массива, если вам нужна функция обработки формы, например, когда вы связываете третий вход по имени с третьим значением другого набора входных данных, и между ними есть пустые входы.