簡単な再帰法を教えてください

WBOY
リリース: 2016-06-23 14:10:38
オリジナル
729 人が閲覧しました

$arr = array(
array(
'id' => 1,
'parentid' => 0,
'title' => 'a'
),
array(
'id' => 2,
'parentid' => 1,
'title' => 'a-1'
),
array(
'id' => 3,
'親 ID' => 1,
'タイトル' => 'a-1'
),
array(
'id' => 4,
'parentid' => 2,
'title' => 'a-1-1
)
);

递归转换は数组如下:
$arr = array(
'id' => 1,
'parentid' => 0,
'タイトル' => 'a',
'子' => array(
'id' => 2、 'parentid' => 'title' => 'a-1' => array .....
)Array(
'id' => 3、
'dartid' => 2、
'title' => 'a-2'
)、
.... .... ..
);
请问要 どのように写しますか?



ディスカッションへの返信 (解決策)

function findChildren($list, $p=0){  $r = array();  foreach($list as $id=>$item){    if($item['parentid'] == $p) {      $r[$id] = $item;      if($t = findChildren($list, $item['id']) )        $r[$id]['children'][] = $t;    }  }  return $r;}        $arr = array(    array(        'id' => 1,        'parentid' => 0,        'title' => 'a'    ),    array(        'id' => 2,        'parentid' => 1,        'title' => 'a-1'    ),    array(        'id' => 3,        'parentid' => 1,        'title' => 'a-1'    ),    array(        'id' => 4,        'parentid' => 2,        'title' => 'a-1-1'    )  );print_r(findChildren($arr));
ログイン後にコピー
Array
(
[0] => Array
(
[id] => 1
[parent ] id] => 0
] = & Gt;
[0] = & gt; 配列
(
[1] = & gt; 配列
(
[id] = & gt; 2
[paintid] = & gt; 1
[title] = & gt; a- 1
;                                                            [タイトル] => a-1-1
)
)

)
)
[2] => array

[id] => 3
[dartid] => 1
[title] => a-1

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート