0
我面对这种挑战:显示分层,多维阵列作为嵌套列表(递归)
我需要从一个分层的,多维阵列作为嵌套列表显示数据。我想使用递归来做到这一点,因为我不知道列表可能有多少级别。这是我工作中的数据(简化):
array (size=54)
0 =>
object(stdClass)[786]
public 'term_id' => string '1' (length=3)
public 'name' => string 'All' (length=25)
public 'parent' => string '0' (length=3)
public 'children' => array (size=2)
0 =>
object(stdClass)[785]
public 'term_id' => string '2' (length=3)
public 'name' => string 'Clothes' (length=25)
public 'parent' => string '1' (length=3)
public 'children' => (size=1)
0 =>
object(stdClass)[786]
public 'term_id' => string '3' (length=3)
public 'name' => string 'Scarves' (length=25)
public 'parent' => string '2' (length=3)
1 =>
object(stdClass)[785]
public 'term_id' => string '4' (length=3)
public 'name' => string 'Gloves' (length=25)
public 'parent' => string '1' (length=3)
结果应该是一个嵌套列表类似于此:
- 所有
- 衣服
- 围巾
- 食品
-
种
- 蔬菜
- 衣服
尝试许多时间后,我已经建立了利用array_walk_recursive
和我自己的另一递归函数(简体):
function attachChildren($items)
{
foreach($items as $item) {
echo $item->name;
if (is_array(($item->children))) {
$this->attachChildren($item->children);
}
}
}
function buildTree($value, $key)
{
echo $value->name;
if (is_array($value->children)) {
$this->attachChildren($value->children);
}
}
array_walk_recursive($sortedArray, 'buildTree');
这个解决方案的问题正在获取格式化权限。两个函数产生输出,我发现很难将项目排列在缩进列表中。
将此数组显示为具有多个级别的缩进列表的最佳方法是什么?
遍历数组和子数组。第一个索引元素'ul'子数组''li'子数组追加'ul> li' – Bsienn 2015-04-03 11:54:27