我的问题是:
我想得到一个区域的所有子区域。
每个区域都有一个定义该区域的代码,以及一个指向其父区域的父区域。
例如:
我有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作为数组合并的结果,这实际上是不正确的。我应该合并原始数组。所以在我之前的代码中,我一直在合并同一个东西。

10-08 06:40