比如這樣兩個個數組 $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).'
';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