以下は、多次元配列を 1 次元配列に変換するために作成したクラス メソッドです。変換された 1 次元配列の各要素には、元の多次元配列の対応するキー、値、次元 (つまり深さ) が含まれます。次元配列の場合、対応する元の要素も配列であり、対応する 1 次元要素の値は -- で表されます (もちろん、これは変更可能です)。多次元配列をフォーマットして出力する場合は、より効果的です。
namespace app\libs\utils;class ArrayHelper{ public static function re_array($array, $p_node_deepth=0, $sub_node_deepth=0) { $out = array(); foreach($array as $k=>$v){ if(is_array($v)){ $tmp = array("key"=>$k, "value"=>"--","deepth"=>$p_node_deepth); $out[] = $tmp; //数组的话,级联调用 $out = array_merge($out, self::re_array($v, $sub_node_deepth+1, $p_node_deepth+1)); }else{ $tmp = array("key"=>$k, "value"=>$v,"deepth"=>$sub_node_deepth); $out[] = $tmp; } } return $out; }}
例:
$a = array( "code"=>0, "detail"=>array("msg"=>"get data success"), "func"=>"api");print_r(ArrayHelper::re_array($a));
結果:
Array([0] => Array ( [key] => code [value] => 0 [deepth] => 0 )[1] => Array ( [key] => detail [value] => -- [deepth] => 0 )[2] => Array ( [key] => msg [value] => get data success [deepth] => 1 )[3] => Array ( [key] => func [value] => api [deepth] => 0 ))