我的问题如下: 我想获取一个区域的所有子区域。 每个区域都有定义该区域的代码和一个指向其父区域的父区域。
例如:
我有代码为2058的X区域。我想要该区域的所有子区域 我得到Y的代码= 123,父代= 2058,Z的代码= 500,父代= 2058 现在,我需要Y和Z的所有子区域。我将使用代码[123,500]并重复该过程,直到区域中没有任何子区域。
这是我完成的代码,但是出现一些错误。 顺便说一下,我正在使用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的孩子。 因此,如果代码= 2058,那么我只会得到父母= 2058的孩子。
答案 0 :(得分:0)
问题解决了,这只是一个放错位置的变量。 无论如何,如果有人遇到类似问题,解决方案将与我的方法非常相似。
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
作为数组合并的结果,这实际上是不正确的。我应该合并原始数组。因此,在我之前的代码中,我一直都在合并同一件事。