Имя: Пароль:
IT
Веб-мастеринг
Помогите с PHP кодом
0 rotting
 
06.10.16
12:11
Вот рекурсивная функция:

public function build_tree($cats){
        foreach ($cats as $cat)
        {
            $result = (new \yii\db\Query())
                ->select(['id', 'name', 'parent_id', 'guid'])
                ->from('category')
                ->where(['parent_id' => $cat['id']])
                ->all();
            $i = 1;
            $dats = array();
            foreach ($result as $dat) {
                    $cat_detail['text'] = $dat['name'];
                    $cat_detail['href'] = \yii\helpers\Url::to(['', 'id' => trim($dat['id'])]);
                    $cat_detail['parent_id'] = $dat['parent_id'];
                    $cat_detail['guid'] = $dat['guid'];
                    $cat_detail['id'] = trim($dat['id']);
                    $dats[$i] = $cat_detail;
                    $i++;
            }
            $this->build_tree($dats);
            $cat['nodes'] = $dats;
        }
        return $cats;
    }

Вот так ее вызываю:

$result = (new \yii\db\Query())
            ->select(['id', 'name', 'parent_id', 'guid'])
            ->from('category')
            ->all();
        $cats = array();
        $i=1;
        foreach ($result as $cat) {
            if (empty($cat['parent_id'])) {
                $cat_detail['text'] = $cat['name'];
                $cat_detail['href'] = \yii\helpers\Url::to(['', 'id' => trim($cat['id'])]);
                $cat_detail['parent_id'] = $cat['parent_id'];
                $cat_detail['guid'] = $cat['guid'];
                $cat_detail['id'] = trim($cat['id']);
                $cats[$i] = $cat_detail;
                $i++;
            };
        }
        $tree = $this->build_tree($cats);

Но эта строчка $cat['nodes'] = $dats; как будто игнорируется, что я не так делаю?
2 mxs089
 
06.10.16
13:37
может быть потому что dats - пустой массив
3 mxs089
 
06.10.16
13:40
вообще выходишь из рекурсии?
4 mxs089
 
06.10.16
13:42
build_tree по мне никогда не выйдет из рекурсии, если при вызове есть данные
5 mxs089
 
06.10.16
14:04
$cat['nodes'] = $this->build_tree($dats);