如何计算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 

我会认为最后一个会完成我所需要的,但不是(空的条目来自于表单上没有填充的input)。

你可以使用array_filter来只保存数组中非空的值,如下所示:

 array_filter($array); 

或者如果你的过滤function更复杂:

 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)); } 

如果您的表单处理函数需要它们,这将保留数组索引,例如当您将名称的第三个input与另一个input集的第三个值相关联,并且在它们之间存在空input时。