以下行的含义是什么:
$data[0][$row->parentid]['children'][$row->id] = $row->name
从功能:
function getCategoriesNav(){
$data = array();
$this->db->select('id,name,parentid');
$this->db->where('status', 'active');
$this->db->orderby('parentid','asc');
$this->db->orderby('name','asc');
$this->db->groupby('parentid,id');
$Q = $this->db->get('categories');
if ($Q->num_rows() > 0){
foreach ($Q->result() as $row){
if ($row->parentid > 0){
$data[0][$row->parentid]['children'][$row->id] = $row->name;
}
else{
$data[0][$row->id]['name'] = $row->name;
}
}
}
$Q->free_result();
return $data;
}
孩子们来自哪里,其含义是什么:
$row->parentid or $row->name
?
我的桌子上没有任何“儿童”字段,也没有在任何地方宣布。请帮忙
提前谢谢你, Mehdy
更新
很抱歉,如果我没有清楚地解释这个问题。我的问题是:这个函数中以下行的含义是什么
$data[0][$row->parentid]['children'][$row->id] = $row->name
,这些孩子来自哪里,$row->parentid
或$row->name
实际意味着什么?我的桌子上没有任何字段'儿童',并且没有在任何地方宣布,请帮助我。
谢谢 mehdy
答案 0 :(得分:1)
阅读代码。如果类别中的行具有父ID,则会将子ID添加到父ID children
元素下的数组中。这只是简单地获取结果集并将其转换为层次结构数据结构,从而消除了位置的重复并使其更容易遍历。
更新
具体来说,以下代码行是做什么的:
$data[0][$row->parentid]['children'][$row->id] = $row->name;
您的函数循环查询结果集并检查当前行是否指定了父ID。如果是,它会将哈希附加到数组数组(您的层次结构)。
foreach ($Q->result() as $row) {
您的查询结果是行对象的集合。每个对象似乎都有一个属性,用于在SQL查询中选择的每个列。对于您的SELECT
字段:
$this->db->select('id,name,parentid');
我们有:
$row->id
$row->name
$row->parentid
回到原来的代码行:
$data[0][$row->parentid]['children'][$row->id] = $row->name;
这一行正构建一个这样的结构:
Array (
[0] => Array ( // $data[0]
[400] => Array ( // $data[0][$row->parentid]
[children] => Array ( // $data[0][$row->parentid]['children']
[53] => Animal // these are from [$row->id] = $row->name;
[54] => Mineral
[55] => Vegetable
)
)
[401] => Array (
[children] => Array (
[4] => Wood
[6] => Metal
[2] => Plastic
)
)
)
)
您可以通过删除第一个包装器数组$data[0]
来略微简化此结构。所以你要改变代码:
$data[$row->parentid]['children'][$row->id] = $row->name;
这样就改变了结构:
Array (
[400] => Array ( // $data[$row->parentid]
[children] => Array ( // $data[$row->parentid]['children']
[53] => Animal // these are from [$row->id] = $row->name;
[54] => Mineral
[55] => Vegetable
)
)
[401] => Array (
[children] => Array (
[4] => Wood
[6] => Metal
[2] => Plastic
)
)
)
我希望这能为您澄清代码。
答案 1 :(得分:0)
它在数组$row->name
中添加一个ID为$row->id
所以它的作用是向父节点添加一个子行,当时ID为$row->parentid
。如果父项具有子项