php - 如何检查多维数组中的任何值是否为空?

标签 php arrays multidimensional-array

如何检查多维数组中的任何值是否为空。我在网上搜索并找到不同的解决方案,但不是我需要的。解决方案要么针对所有值,要么针对某些特定值,或者过滤掉某些值等等。

事情是,我有一个可以有 2 或 10 个输入字段的表单,它们重复姓名和包输入字段,但我可以有多个输入字段,并且所有输入字段都需要填写,所以如果有的话数组中的字段为空,我应该找到它并向用户返回错误,因此他必须填写所有数组字段。

[povratna_odrasli] => Array
    (
        [1] => Array
            (
                [ime] => 
                [prezime] => 
                [prtljag] => bez
            )

        [2] => Array
            (
                [ime] => 
                [prezime] => 
                [prtljag] => bez
            )

        [3] => Array
            (
                [ime] => 
                [prezime] => 
                [prtljag] => bez
            )

    )

[povratna_deca] => Array
    (
        [1] => Array
            (
                [ime] => 
                [prezime] => 
                [prtljag] => bez
                [godine] => 0
            )

    )

这基本上就是提交表单时数组的外观

最佳答案

您应该能够使用array_walk_recursive来迭代数组及其子数组,如下所示。

$arr=array(
    'povratna_odrasli'  =>  array(
        array('ime' =>  '','prezime'=>'','prtljag'=>'bez'),
        array('ime' =>  '','prezime'=>'','prtljag'=>'baz'),
        array('ime' =>  'knickers','prezime'=>'','prtljag'=>'baz')
    ),
    'povratna_deca'     =>  array(
        array('ime' =>  '', 'prezime'=>'', 'prtljag'=>'bez', 'godine'=>0)
    )
);
$output=array();
$status=array_walk_recursive( $arr, function($v,$k,$o){
    if( empty( $v ) && $v!==0 )$o[$k]=$v;
},&$output );

if( !empty( $output ) )echo '<pre>',print_r($output,true),'</pre>';

哪些输出:

Array
(
    [ime] => 
    [prezime] => 
)

如果 $output 变量不为空,那么您就知道以某种方式进一步处理。

您可以在 PHP site 上找到完整的说明,以及 array_walk_recursive 的示例用法。

较新版本的 PHP 在通过引用传递第三个参数时会抛出“PHP fatal error :调用时按引用传递已被删除”: - 而是声明 $output 变量作为回调中的全局变量

$status=array_walk_recursive( $arr, function($v,$k){
    global $output;
    if( empty( $v ) && $v!==0 )$output[$k]=$v;
} );

关于php - 如何检查多维数组中的任何值是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47938188/

相关文章:

c - 计算数组中分配的内存时出现意外输出

php - 找不到保存处理程序 - Redis 集群

php - Preg 匹配方括号和 @strings 内的字符串

python - Swig 和多维数组

java - 无法将 double 型格式化为在小数点分隔符后打印 2 位数字

python-2.7 - 将 2D numpy.ndarray 转换为 pandas.DataFrame

c - 多维线性数组 C

php - 如何将mysql改为mysqli?

php - 接受 PHP cURL 的 Nodejs 服务器

ruby - 将字符串拆分为每个元素具有特定数量字符的数组