一尘不染

如何计算PHP数组中的非空条目?

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

我认为最后一个可以满足我的需要,但不是(空条目来自表单上未填写的输入)。


阅读 326

收藏
2020-05-29

共1个答案

一尘不染

您可以使用array_filter仅在数组中保留“真实”的值,如下所示:

array_filter($array);

如果您明确只希望non- empty,或者您的过滤器功能更复杂:

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

因此,仅计算非空项目,就像调用empty(item)每个空项目一样:

count(array_filter($array, function($x) { return !empty($x); }));
2020-05-29