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

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

WBOY
Freigeben: 2016-06-23 13:54:17
Original
1474 Leute haben es durchsucht

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

$arr=array(0=>'', 1=>array(0=>'' ,1=>array(0=>'') ));$brr=array(0=>'', 1=>array(0=>'' ,1=>array(0=>'1') ));
Nach dem Login kopieren


回复讨论(解决方案)

可以这样

$arr = array(0=>'', 1=>array(0=>'' ,1=>array(0=>'') ));var_dump(preg_replace('/[",\[\]]/', '', json_encode($arr)));
Nach dem Login kopieren
Nach dem Login kopieren
string(0) ""
显然对于 $brr 会是 string(1) "1"

可以这样

$arr = array(0=>'', 1=>array(0=>'' ,1=>array(0=>'') ));var_dump(preg_replace('/[",\[\]]/', '', json_encode($arr)));
Nach dem Login kopieren
Nach dem Login kopieren
string(0) ""
显然对于 $brr 会是 string(1) "1"


这样如果数组很大的话会影响效率?或者可以递归判断是否有值吗?

可能这样要好些

$arr = array(0=>'', 1=>array('a'=>'' ,1=>array(0=>'') ));var_dump(preg_replace('/"\w+":|[",{}\[\]]/', '', json_encode($arr)));
Nach dem Login kopieren

那就怪了,我只执行了两个函数
肯定要比递归要快的多

递归要这样写

$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;}
Nach dem Login kopieren

递归要这样写

$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;}
Nach dem Login kopieren


多谢版主!!

$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;}
Nach dem Login kopieren

结果:
0
1

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage