Как подсчитать непустые записи в массиве 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 

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

Solutions Collecting From Web of "Как подсчитать непустые записи в массиве PHP?"

Вы можете использовать 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)); 
 count(array_filter($name)); 

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

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

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