又一个递归问题。
过去几个小时我尝试开发的是一个函数,它可以让我生成相同页面的平面数组,但子页面前面有一个标识符(即“—子页面, ——子子页面等”)。
我有一个页面的分层数组,每个子页面都嵌套在其父页面内。以下是他们的输出示例:
Array
(
[0] => Array
(
[id] => 1
[parent_id] => 0
[title] => Parent Page
[children] => Array
(
[0] => Array
(
[id] => 12
[parent_id] => 1
[title] => Another Sub Page
)
[1] => Array
(
[id] => 3
[parent_id] => 1
[title] => Sub Page
[children] => Array
(
[0] => Array
(
[id] => 7
[parent_id] => 3
[title] => Sub Sub Page
)
)
)
)
)
[1] => Array
(
[id] => 8
[parent_id] => 0
[title] => Another Parent Page
)
)
我一直能够让它工作,直到我到达递归的第二级,然后它仍然只生成一个—
。我想让解决方案递归。
我在使用上面的示例的最终输出中寻找的是:
Array
(
[1] => Parent Page
[12] => — Another Sub Page
[3] => — Sub Page
[7] => — — Sub Sub Page
[8] => Another Parent Page
)
最佳答案
function generate_array(array $arr, &$output = array(), $index = 0)
{
foreach($arr as $item)
{
$output[$item['id']] = str_repeat('— ', $index) . $item['title'];
if(isset($item['children']))
{
generate_array($item['children'], $output, $index + 1);
}
}
return $output;
}
$output = generate_array($arr);
存储在$output
中的数据将是:
Array
(
[1] => Parent Page
[12] => — Another Sub Page
[3] => — Sub Page
[7] => — — Sub Sub Page
[8] => Another Parent Page
)
关于php - 用于从分层数组生成平面(但带有嵌套标题)数组的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8610606/