Heim > Backend-Entwicklung > PHP-Tutorial > Suchen Sie in der Abteilungsliste nach der Anzahl aller Mitarbeiter unter jeder Abteilung. Beim rekursiven Aufruf besteht das Problem wiederholter Arrays

Suchen Sie in der Abteilungsliste nach der Anzahl aller Mitarbeiter unter jeder Abteilung. Beim rekursiven Aufruf besteht das Problem wiederholter Arrays

WBOY
Freigeben: 2016-08-18 09:15:51
Original
1142 Leute haben es durchsucht

Frage:
Der Code lautet wie folgt:

<code>  //查找所有下级部门的id
    public static function actionSon($company_id,$id)
    {   
        global $temp;
        $modelClass = self::find()
            ->where(['parent_id'=>$id,'company_id'=>$company_id]) 
            ->all();  
        if(!empty($modelClass)){
            foreach ($modelClass as $k => $value) { 
                $temp[] =$value->id;
                self::actionSon($company_id,$value->id);//调用函数,传入参数,继续查询下级
            }
        }
        return $temp;
    }
    </code>
Nach dem Login kopieren
Nach dem Login kopieren
<code>fields里面调用
    public function fields()
    {
        return [
            'id',
            'company_id'
            'user_count'=>function(){

                // return $this->getUserCount();
                $dep_ids=self::actionSon($this->company_id,$this->id);  
                // $GLOBALS['temp']=[];
               //unset($temp);
print_r($dep_ids);
              
            },
        ];
    }</code>
Nach dem Login kopieren
Nach dem Login kopieren

Ergebnisausgabe:
Suchen Sie in der Abteilungsliste nach der Anzahl aller Mitarbeiter unter jeder Abteilung. Beim rekursiven Aufruf besteht das Problem wiederholter Arrays

Wenn es Abteilungen in der Liste gibt, werden diese für immer wiederholt.
Das Ergebnis, das ich brauche, besteht darin, bei jedem Aufruf die IDs aller Unterabteilungen der aktuellen Abteilung abzurufen und sie in Form eines eindimensionalen Arrays anzuzeigen.
Lassen Sie $GLOBALS['temp']=[] los, um nur eine Ebene zu finden.

Antwortinhalt:

Frage:
Der Code lautet wie folgt:

<code>  //查找所有下级部门的id
    public static function actionSon($company_id,$id)
    {   
        global $temp;
        $modelClass = self::find()
            ->where(['parent_id'=>$id,'company_id'=>$company_id]) 
            ->all();  
        if(!empty($modelClass)){
            foreach ($modelClass as $k => $value) { 
                $temp[] =$value->id;
                self::actionSon($company_id,$value->id);//调用函数,传入参数,继续查询下级
            }
        }
        return $temp;
    }
    </code>
Nach dem Login kopieren
Nach dem Login kopieren
<code>fields里面调用
    public function fields()
    {
        return [
            'id',
            'company_id'
            'user_count'=>function(){

                // return $this->getUserCount();
                $dep_ids=self::actionSon($this->company_id,$this->id);  
                // $GLOBALS['temp']=[];
               //unset($temp);
print_r($dep_ids);
              
            },
        ];
    }</code>
Nach dem Login kopieren
Nach dem Login kopieren

Ergebnisausgabe:
Suchen Sie in der Abteilungsliste nach der Anzahl aller Mitarbeiter unter jeder Abteilung. Beim rekursiven Aufruf besteht das Problem wiederholter Arrays

Wenn es Abteilungen in der Liste gibt, werden diese für immer wiederholt.
Das Ergebnis, das ich brauche, besteht darin, bei jedem Aufruf die IDs aller Unterabteilungen der aktuellen Abteilung abzurufen und sie in Form eines eindimensionalen Arrays anzuzeigen.
Lassen Sie $GLOBALS['temp']=[] los, um nur eine Ebene zu finden.

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage