Php 是否有递归遍历数组值的函数?

Php 是否有递归遍历数组值的函数?,php,arrays,Php,Arrays,我有一个数组,其中可能有一些空值或空值。是否有一个PHP函数可以用来遍历这个数组,以简单地找出是否有任何值 例如: [0]=> [1]=> [2]=> test 我想测试当前值的总数(如果有)。count()不起作用,因为这只是这个数组的一部分,它总是返回不准确的1 Array ( [inputbox] => Array ( [name] => Array (

我有一个数组,其中可能有一些空值或空值。是否有一个PHP函数可以用来遍历这个数组,以简单地找出是否有任何值

例如:

[0]=>
[1]=>
[2]=> test
我想测试当前值的总数(如果有)。count()不起作用,因为这只是这个数组的一部分,它总是返回不准确的1

Array
(
    [inputbox] => Array
        (
            [name] => Array
                (
                    [0] => New Text Document.txt  <------- This is what I need to test
                    [1] => 
                )

            [type] => Array
                (
                    [0] => text/plain
                )

            [tmp_name] => Array
                (
                    [0] => /var/tmp/phpLg2rFl
                    [1] => 
                )

            [error] => Array
                (
                    [0] => 0
                    [1] => 
                )

            [size] => Array
                (
                    [0] => 0
                    [1] => 
                )
        )
)
数组
(
[inputbox]=>阵列
(
[名称]=>数组
(
[0]=>New Text Document.txt
)
[类型]=>数组
(
[0]=>文本/纯文本
)
[tmp_name]=>数组
(
[0]=>/var/tmp/phpLg2rFl
[1] => 
)
[错误]=>数组
(
[0] => 0
[1] => 
)
[大小]=>阵列
(
[0] => 0
[1] => 
)
)
)

我不太理解你的问题,但也许你在找

array\u filter($arr)
将返回一个已删除所有空值的数组,因此在您的情况下,只有值为
test
的索引2将被保留,之后您可以使用
count()


根据你的评论:

if (count(array_filter($arr)) > 0)
{
    echo '$arr has values';
}

请注意,如果不为
array\u filter()
提供第二个参数,所有可以转换为false的值都将被删除,例如
0
。如果只想删除空值,可以执行以下操作:

if (count(array_filter($arr, 'isset')) > 0)
{
    echo '$arr has values';
}
或(我的首选版本):


您也可能对某个项目感兴趣。


根据您上次的评论,我仍然认为
array\u filter()
有效(假设
$\u文件
),请尝试以下方法:

if (count(array_filter($_FILES['inputbox']['name'], 'strlen')) > 0)
{
    echo count($_FILES['inputbox']['name']) . ' files';
    echo '<br />';
    echo count(array_filter($_FILES['inputbox']['name'], 'strlen')) . ' files set';
}
if(计数(数组_过滤器($_文件['inputbox']['name'],'strlen'))>0)
{
回显计数($_文件['inputbox']['name'])。'FILES';
回声“
”; 回波计数(数组_过滤器($_文件['inputbox']['name'],'strlen'))。'FILES set'; }
它是平面阵列吗?或者它也可以是多维数组?如果前者:不需要递归。当你说total number present时,你是指非空值的总数、数组中的项目总数还是你遍历的项目总数?可以有多个文本框来构建此数组,如果用户从框#5而不是1开始,我必须能够测试,以便我可以显示正确的消息。谢谢Alix。它可能会工作,因为我以前没有使用过数组过滤器。我只是想知道数组中是否存在一个值。可以有多个文本框构建此数组,如果用户从框5开始而不是从1开始,我必须能够测试它。@Timay:更新了我的答案
array\u filter()
应该适合你。谢谢你的帮助。。我试过了,看了一下文档,但没有得到正确的结果。即使我在文本框#9中输入一个值,计数也总是返回0。。我可能无法使用数组过滤器。我刚刚注意到这是一个多维数组。我将在上面发布结构。啊。。。实际上,strlen是这里真正的魔法,因为数组中的所有null或空白值都返回false,所以它们不包括在输出中。甜蜜的……:)
if (count(array_filter($_FILES['inputbox']['name'], 'strlen')) > 0)
{
    echo count($_FILES['inputbox']['name']) . ' files';
    echo '<br />';
    echo count(array_filter($_FILES['inputbox']['name'], 'strlen')) . ' files set';
}