0
にフラットな家族のリストを変換するので、私は自分自身を構築します。PHPは、私がこのような状況のために検索してきたし、任意の解決策を見つけることができませんでした</p> <p>...この1つは少しQ & A-スタイルでツリー
は、それは私のニーズのための作業コードを取得するために数日かかったが、今は、より効率的な方法があるかどう疑問に思って:
Array
(
[a] => Array
(
[aa] => Array
(
[aaa] =>
[aab] =>
[aac] =>
)
[ab] =>
[ac] => Array
(
[aca] =>
)
)
[b] => Array
(
[ba] =>
[bb] =>
[bc] =>
)
)
:これが結果です
$data = [
['a','aa','aaa'],
['a','aa','aab'],
['a','aa','aac'],
['a','ab'],
['a','ac','aca'],
['b','ba'],
['b','bb'],
['b','bc'],
];
function tree($values){
$on_end = sizeof($values) == 1 && sizeof($values[0]) == 0;
if ($on_end) return null;
$tree1 = [];
$tree2 = [];
foreach ($values as $a){
$parent = $a[0];
//remove the first column
array_shift($a);
$tree1[ $parent ][] = $a;
}
foreach ($tree1 as $parent => $b){
$tree2[ $parent ] = tree($b);
}
return $tree2;
}
echo "<pre>".print_r(tree($data),true)."</pre>";
もし誰かがより良いものを手に入れたら、それを掲示してください!