【发布时间】:2015-04-02 14:39:14
【问题描述】:
我需要对对象数组进行分层排序。数据如下所示:
array (size=54)
0 =>
object(stdClass)[786]
public 'term_id' => string '1' (length=3)
public 'name' => string 'Boots' (length=25)
public 'parent' => string '0' (length=3)
1 =>
object(stdClass)[785]
public 'term_id' => string '2' (length=3)
public 'name' => string 'Dresses' (length=25)
public 'parent' => string '1' (length=3)
2 =>
object(stdClass)[786]
public 'term_id' => string '3' (length=3)
public 'name' => string 'Scarves' (length=25)
public 'parent' => string '2' (length=3)
3 =>
object(stdClass)[785]
public 'term_id' => string '4' (length=3)
public 'name' => string 'Gloves' (length=25)
public 'parent' => string '1' (length=3)
我想创建一个多维数组来显示这种“父子”层次结构。每个对象的parent 属性引用另一个对象的term_id。
结果看起来像这样:
array (size=54)
0 =>
object(stdClass)[786]
public 'term_id' => string '1' (length=3)
public 'name' => string 'Boots' (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 'Dresses' (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)
到目前为止,我已经想出了这个代码:
$sortedCategories = array();
foreach($shopCategories as $shopCategory) {
$tmp = $shopCategory;
foreach($shopCategories as $category) {
if ($tmp->term_id == $category->parent) {
$tmp->children[] = $category;
$sortedCategories[] = $tmp;
}
}
}
,但我无法让它与多级层次结构一起使用。
如何对数据进行排序以达到预期的结果?
【问题讨论】: