如何检查多维数组中的任何值是否为空。我在网上搜索并找到不同的解决方案,但不是我需要的。解决方案要么针对所有值,要么针对某些特定值,或者过滤掉某些值等等。
事情是,我有一个可以有 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/