【发布时间】:2011-03-02 01:05:07
【问题描述】:
我有一些这种格式的数据:
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 不在输出中,如何使我的代码递归,以便无论数据中存在多少级别或关系,它仍然可以工作?
【问题讨论】:
-
列表是否总是按正确的顺序排列(父母总是排在任何孩子之前?)
标签: php arrays multidimensional-array