パブリック 関数getrtree(){ $データ [] = 配列( 'ID' => 1、 'PID' => 0、 '名称' => '中国' ); $データ [] = 配列( 'ID' => 2、 'PID' => 0、 '名称' => '美国' )。 $データ [] = 配列( 'ID' => 3 'PID' => 0、 '名称' => '韩国' )。 $データ [] = 配列( 'ID' => 4 'PID' => 1、 '名前' => '北京' )。 $データ [] = 配列( 'ID' => 5 'PID' => 1、 '名称' => '上海' )。 $データ [] = 配列( 'ID' => 6 'PID' => 1、 '名称' => '广西' )。 $データ [] = 配列); $ツリー = $この - > build_tree($データ、0 ); しますprint_r($ツリー ); 印刷(json_encode($ツリー、真)); } 関数 findChild(&$のARR、$のID ){ $チャイルズ = 配列(); foreachの($ ARR として $ K => $ V ){ 場合($ V [ 'PID'] == $番号){ $チャイルズ [] = $ V 。 } } を返す $チャイルズを。 } 関数 build_tree($行、$のROOT_ID ){ $チャイルズ = $この - > findChild($行、$のROOT_ID )。 もし(空($チャイルズ)){ リターン ヌル。 } foreachの($チャイルズ として $ K => $ V ){ $ rescurTree = $この - > build_tree($行、$のV [ 'ID' ])。 もし(ヌル!= $ rescurTree ){ $チャイルズ[ $ K ] [ 'チャイルズ'] = $ rescurTree 。 } } を返す $チャイルズを。 }