1
중첩 된 PHP 배열을 재귀 적으로 만드는 방법은 무엇입니까?
one,one
two,two
sub_one,one
sub_two,two
sub_sub_one,sub_one
sub_sub_two,sub_two
sub_sub_sub_one,sub_sub_one
sub_sub_sub_two,sub_sub_two
이제이 데이터가 들어있는 중첩 배열을 만들고 싶습니다.이 코드는 다음과 같습니다.
<?php
$lines[] = "one,one";
$lines[] = "two,two";
$lines[] = "sub_one,one";
$lines[] = "sub_two,two";
$lines[] = "sub_sub_one,sub_one";
$lines[] = "sub_sub_two,sub_two";
$lines[] = "sub_sub_sub_one,sub_sub_one";
$lines[] = "sub_sub_sub_two,sub_sub_two";
foreach($lines as $line)
{
$tmp = explode(",", $line);
$array[$tmp[1]][$tmp[0]] = $tmp[0];
}
foreach($array as $key => $value)
{
foreach($array[$key] as $value2)
{
if(array_key_exists($value2, $array) && $value2 != $key)
{
$array[$key][$value2] = $array[$value2];
$unset[] = $value2;
}
else
{
unset($array[$key]);
}
}
}
foreach($unset as $un)
{
unset($array[$un]);
}
print_r($array);
?>
그러나이 단계는 3 단계 및 아니오로 진행됩니다. 더. 출력은 다음과 같습니다.
Array
(
[one] => Array
(
[sub_one] => Array
(
[sub_sub_one] => sub_sub_one
)
)
[two] => Array
(
[sub_two] => Array
(
[sub_sub_two] => sub_sub_two
)
)
)
sub_sub_sub_one 및 sub_sub_sub_two가 출력되지 않습니다. 데이터가 얼마나 많은 수준이나 관계가 있더라도 상관없이 반복적으로 코드를 재귀 적으로 만들 수 있습니까?
목록은 항상 (? 부모는 항상 자식들을 전에 표시됩니다) 올바른 순서로됩니다 –