Heim  >  Artikel  >  Backend-Entwicklung  >  如何判断一个多维数组里面的值是否都为空?

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

WBOY
WBOYOriginal
2016-06-23 13:54:171451Durchsuche

比如这样两个个数组  $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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn