如何使用 array_walk_recursive() 检查数组是否完全填满[重复]

问题描述 投票:0回答:1

如何使用函数array_walk_recursive检查

PHP
中的数组是否完全填满?

观看片段代码。

function checker($arr) {
    $r = 1;
    array_walk_recursive($arr, function($value, $key) {
        if ($value == '') { $r = 0; }
        //echo "$value = $key\n";
    });
    return $r;
}

该函数应检查是否存在空元素

但是我的函数有问题。

变量

$r
不会从
array_walk_recursive()
匿名函数中返回。

我认为定义全局变量是错误的,但我不知道如何在不这样做的情况下解决这个问题。

那么,如何使用

array_walk_recursive
调整功能呢?

php arrays scope return recursive-datastructures
1个回答
2
投票

由于几个小时后没有人完整回答,这里是问题的完整答案。

如果您想迭代整个数组并对元素进行计数,或对它们执行操作,@Barman 的注释适合您。

如果您只想执行问题所要求的操作,最好的方法是在发现键值为空的数组元素后立即停止该函数,以避免不必要的循环。

因此,在这种情况下,最好使用以下代码,而不考虑变量的闭包作用域,而是使用一个简单的异常:

function check_if_the_array_has_no_empty_values($arr) {
    try {
        array_walk_recursive($arr, function($value, $key) {
            if ($value == '') { throw new Exception; }
        });
        return 1;
    }catch(Exception $exception) {
        return 0;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.