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

Dam*_*mon 49 php arrays count

考虑:

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


$name = $_POST['name']
Run Code Online (Sandbox Code Playgroud)

我想要结果4.

count ($name) = 9
count (isset($name)) = 1
count (!empty($name)) = 1
Run Code Online (Sandbox Code Playgroud)

我认为最后一个会完成我需要的东西,但它不是(空条目来自表单上未填充的输入).

moe*_*fju 106

您可以使用array_filter仅保留数组中非空的值,如下所示:

array_filter($array);
Run Code Online (Sandbox Code Playgroud)

或者,如果您的过滤功能更复杂:

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

所以,只计算非空:

count(array_filter($array, function($x) { return !empty($x); }));
Run Code Online (Sandbox Code Playgroud)


Mat*_*ins 21

count(array_filter($name));
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这不仅返回空元素,而且每个元素的值都是[等于`false`](http://php.net/manual/en/language.types.boolean.php#language.types.boolean.casting )(即````,`null`,`0`,`false`,`"0"`). (13认同)

Sup*_*del 5

可能的解决方案:首先需要从数组中删除空/空、假和零值,然后计算数组的剩余值

如果您不需要从数组中删除零值,但需要删除 null 和 false 值

count(array_filter($arrayName, 'strlen'));
//"strlen" use as second parameter if you no need to remove zero '0' values
Run Code Online (Sandbox Code Playgroud)

如果您需要从数组中删除零值、空值和假值

count(array_filter($arrayName));
Run Code Online (Sandbox Code Playgroud)