我的问题是:
我想得到一个区域的所有子区域。
每个区域都有一个定义该区域的代码,以及一个指向其父区域的父区域。
例如:
我有X区,代码=2058。我要那个区域的所有分区
代码为123的Y,父级为2058,代码为500的Z,父级为2058
现在我想要Y和Z的所有子区域。我将使用代码[123500]并重复该过程,直到区域没有任何子区域。
这是我做的代码,但我得到一些错误。
顺便说一下,我使用的是一个php框架,但我希望您理解代码。
public function findChild($code)
{
$result = array();
$result = $this->db->get_where('zones', array('parent' => $code))->result();
if(empty($result)) {
return array();
} else {
foreach($result as $zone) {
$temp = $this->findChild($zone['code']);
$rr = array_merge($result, $temp);
}
}
return $rr;
}
我做错了什么?解决这个问题的最好方法是什么?
我得到的结果是只有深度为1的孩子。
所以如果code=2058,我只得到父代为2058的子代。
最佳答案
问题解决了,只是变量放错了地方。
不管怎样,如果有人有类似的问题,解决方法将非常类似于我的方法。
public function findChild($code)
{
$result = $this->db->get_where('zones', array('parent' => $code))->result();
if(empty($result)) {
return array();
} else {
foreach($result as $zone) {
$temp = $this->findChild($zone->code);
$result = array_merge($result, $temp);
}
}
return $result;
}
我使用
$rr
作为数组合并的结果,这实际上是不正确的。我应该合并原始数组。所以在我之前的代码中,我一直在合并同一个东西。