使用 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
变量检查是否存在空元素。

但是我的函数有问题。

变量

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

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

那么,如何使用

array_walk_recursive
调整功能呢?

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

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

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

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

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

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