如何使用函数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
调整功能呢?
由于几个小时后没有人完整回答,这里是问题的完整答案。
如果您想迭代整个数组并对元素进行计数,或对它们执行操作,@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;
}
}