gpt4 book ai didi

php - 使用递归函数使用php数组为树结构数据创建json数据

转载 作者:行者123 更新时间:2023-11-29 03:05:29 25 4
gpt4 key购买 nike

我有类别表:

CategoryID    CategoryName   ParentID
1 Root Null
2 News 1
3 Horoscope 1
4 Sports 2
5 National 2
6 Daily 3
7 Aries 6
8 Weekly 3
9 Aries 8

我正在尝试创建树结构的 json 数据,如下所示:

[{
"id":1,
"text":"Root",
"children":[{
"id":2,
"text":"News",
"state":"closed",
"children":[{
"id":4,
"text":"Sports"
},{
"id":5,
"text":"National"
}]
},{
"id":3,
"text":"Horoscope",
"children":[{
"id":6,
"text":"Daily",
"children":[{
"id":7,
"text":"Aries"
}],

},{
"id":8,
"text":"Weekly",
"children":[{
"id":9,
"text":"Aries"
}],
}
}]
}]

我有以下功能来呈现所有类别和子类别

   public function categoryData($parent)
{
$model=new Category();
$cat=$model->findAllByAttributes(array('ParentCategoryID'=>$parent,'Status'=>2));

$category = array();


foreach($cat as $record)
{
global $category;
$category['id'][$record->CategoryID] = $record->CategoryID;
$category['text'][$record->CategoryID] = $record->CategoryName;


// $category['children'][$record->CategoryID] = array();

//$names[] = $record->CategoryName;

$this->categoryData($record->CategoryID);

}
//array_push($category['children'][$record->ParentCategoryID], $category['children'][$record->CategoryID]);
return $category;
}

问题: 但是上面的操作没有以正确的格式将类别放在数组中,因此我可以通过应用 json_encode($category) 函数创建上面的 json 数据格式。

如何使用递归函数将类别数据放置在树结构数组中?

最佳答案

public $children = array() 属性添加到您的 Category 模型。然后遍历结果并在父级的 $children 数组中设置一个引用:

$categories = Category::model()->findAll(array('index'=>'id'));
foreach($categories as $category)
$categories[ $category->id_parent ]->children[] = $category;

echo json_encode($categories);

关于php - 使用递归函数使用php数组为树结构数据创建json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16120892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com