首頁  >  文章  >  後端開發  >  如何判断一个多维数组里面的值是否都为空?

如何判断一个多维数组里面的值是否都为空?

WBOY
WBOY原創
2016-06-23 13:54:171454瀏覽

比如这样两个个数组  $arr 认为是空的,$brr 认为是有值的。

$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).'<br>';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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn