如何判断一个多维数组里面的值是否都为空?
程序员文章站
2024-02-02 12:13:34
...
比如这样两个个数组 $arr 认为是空的,$brr 认为是有值的。
显然对于 $brr 会是 string(1) "1"
显然对于 $brr 会是 string(1) "1"
这样如果数组很大的话会影响效率?或者可以递归判断是否有值吗?
多谢版主!!
结果:
0
1
$arr=array(0=>'', 1=>array(0=>'' ,1=>array(0=>'') ));$brr=array(0=>'', 1=>array(0=>'' ,1=>array(0=>'1') ));
回复讨论(解决方案)
可以这样
$arr = array(0=>'', 1=>array(0=>'' ,1=>array(0=>'') ));var_dump(preg_replace('/[",\[\]]/', '', json_encode($arr)));string(0) ""
显然对于 $brr 会是 string(1) "1"
可以这样
$arr = array(0=>'', 1=>array(0=>'' ,1=>array(0=>'') ));var_dump(preg_replace('/[",\[\]]/', '', json_encode($arr)));string(0) ""
显然对于 $brr 会是 string(1) "1"
这样如果数组很大的话会影响效率?或者可以递归判断是否有值吗?
可能这样要好些
$arr = array(0=>'', 1=>array('a'=>'' ,1=>array(0=>'') ));var_dump(preg_replace('/"\w+":|[",{}\[\]]/', '', json_encode($arr)));
那就怪了,我只执行了两个函数
肯定要比递归要快的多
递归要这样写
$arr = array(0=>'', 1=>array('a'=>'' ,1=>array(0=>'') ));var_dump(foo($arr));function foo($ar) { if(empty($ar)) return true; if(is_array($ar)) { foreach($ar as $v) { if(! foo($v)) return false; } return true; } return flase;}
递归要这样写
$arr = array(0=>'', 1=>array('a'=>'' ,1=>array(0=>'') ));var_dump(foo($arr));function foo($ar) { if(empty($ar)) return true; if(is_array($ar)) { foreach($ar as $v) { if(! foo($v)) return false; } } return flase;}
多谢版主!!
$arr=array(0=>'',1=>array(0=>'',1=>array(0=>'')));$brr=array(0=>'',1=>array(0=>'',1=>array(0=>'1')));echo test($arr).'
';echo test($brr);function test(&$array){ static $r = 0; if(!is_array($array)){ if(empty($array)){ $r=0; }else{ $r=1; } } foreach ($array as $key => $value) { if (is_array($value)) { test($array[$key]); } else { if(empty($value)){ $r=0; }else{ $r=1; } } } return $r;}
结果:
0
1
上一篇: 这是一道什么题哟?小弟我如何做不来哟
下一篇: ajax传值跟回调原理