php - 是否有一个函数可以递归遍历数组的值?

标签 php arrays

我有一个数组,其中可能包含一些空值或空值。是否有一个 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] => 
                )
        )
)

最佳答案

我不太明白你的问题,但也许你正在寻找 array_filter() ?

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


根据您的评论:

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

请注意,如果您不为 array_filter() 提供第二个参数,所有可以转换为 false 的值都将被丢弃,例如 0。如果你只想删除空值,你可以这样做:

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

或者(我的首选版本):

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

您可能还对 Coalesce function for PHP 感兴趣.


鉴于您最后的评论,我仍然认为 array_filter() 有效,(假设 $_FILES)试试这个:

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

关于php - 是否有一个函数可以递归遍历数组的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167299/

相关文章:

php - MySQL GROUP BY 查询仅返回一行

php - 每周执行一次 php 代码,但随机一天

c++ - 传统上如何在 C++ 中实现多类型容器(数组/vector/列表)? (当然没有元组)

php - MyClass::class - 获取 MyClass 的字符串表示

php - 如何在不让字符串被引号包围的情况下使用 PDO::quote?

php - Wordpress,通过名称或 URL 获取帖子内容

arrays - 为什么将一个值附加到散列中的数组也会修改已分配给它的其他变量?

c++ - 扫描数字数组并计算范围 (0 - 24)(25 - 49) 等之间的数字的算法

c++ - 指针运算 : out of bound without dereferencing

javascript - 获取 jQuery 模板数组中的第一项