たとえば、これら 2 つの配列 $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) ""
次のようにすることができますthis rreestring(0) ""
明らかに $brr は string(1) "1" になります
おそらくこれの方が良いです
$arr = array(0=>'', 1=>array(0=>'' ,1=>array(0=>'') ));var_dump(preg_replace('/[",\[\]]/', '', json_encode($arr)));
おかしいですね、私は2つの関数しか実行しませんでした
再帰よりもはるかに速いはずです
$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;}