我有一个表单将多维数组发布到我的 PHP 脚本,我需要知道数组中的所有值是否为空。
这是我的数组:
$array[] = array('a'=>'',
'b'=>array('x'=>''),
'c'=>array('y'=>array('1'=>'')),
'd'=>'');
我尝试使用 array_reduce(),但它只是返回一个数组:
echo array_reduce($array, "em");
function em($a,$b){
return $a.$b;
}
有什么想法吗?
我注意到这个已经存在了一段时间了,这是一个运行良好的自定义函数。
function emptyArray($array) {
$empty = TRUE;
if (is_array($array)) {
foreach ($array as $value) {
if (!emptyArray($value)) {
$empty = FALSE;
}
}
}
elseif (!empty($array)) {
$empty = FALSE;
}
return $empty;
}
如果数组中的所有项目都为空,则该函数将返回 true,但如果数组中的一项不为空,则该函数将返回 false。
用途:
if (emptyArray($ARRAYNAME)) {
echo 'This array is empty';
}
else {
echo 'This array is not empty';
}
这是一个精简的递归函数,用于检查不确定深度数组的所有值是否仅包含错误值(空字符串、空值、零等)。
$v
是一个数组,则对其进行递归调用并返回其布尔结果;否则检查 $v
的布尔值false
值沿树向上冒泡。代码:(演示)
function empty_r(array $array): bool
{
foreach ($array as $v) {
if (is_array($v) ? !empty_r($v) : $v) {
return false;
}
}
return true;
}
var_export(empty_r($array));
对于任何想要迭代对象的人,只需在
|| is_object($v)
检查后添加 is_array()
即可。