当前位置:Gxlcms > PHP教程 > 部门列表找每一个部门下的所有员工数,循环调用递归出现重复数组的问题

部门列表找每一个部门下的所有员工数,循环调用递归出现重复数组的问题

时间:2021-07-01 10:21:17 帮助过:19人阅读

问题:
代码如下:

  1. <code> //查找所有下级部门的id
  2. public static function actionSon($company_id,$id)
  3. {
  4. global $temp;
  5. $modelClass = self::find()
  6. ->where(['parent_id'=>$id,'company_id'=>$company_id])
  7. ->all();
  8. if(!empty($modelClass)){
  9. foreach ($modelClass as $k => $value) {
  10. $temp[] =$value->id;
  11. self::actionSon($company_id,$value->id);//调用函数,传入参数,继续查询下级
  12. }
  13. }
  14. return $temp;
  15. }
  16. </code>
  1. <code>fields里面调用
  2. public function fields()
  3. {
  4. return [
  5. 'id',
  6. 'company_id'
  7. 'user_count'=>function(){
  8. // return $this->getUserCount();
  9. $dep_ids=self::actionSon($this->company_id,$this->id);
  10. // $GLOBALS['temp']=[];
  11. //unset($temp);
  12. print_r($dep_ids);
  13. },
  14. ];
  15. }</code>

结果输出:

得出重复的数据,要是列表还有部门的话会这样一直重复下去,如何解决这个问题?
我需要的结果是每调用一次就能获取到当前部门下的所有子部门的id,以一维数组的形式展示。
把$GLOBALS['temp']=[];放开它只能找到一级。

回复内容:

问题:
代码如下:

  1. <code> //查找所有下级部门的id
  2. public static function actionSon($company_id,$id)
  3. {
  4. global $temp;
  5. $modelClass = self::find()
  6. ->where(['parent_id'=>$id,'company_id'=>$company_id])
  7. ->all();
  8. if(!empty($modelClass)){
  9. foreach ($modelClass as $k => $value) {
  10. $temp[] =$value->id;
  11. self::actionSon($company_id,$value->id);//调用函数,传入参数,继续查询下级
  12. }
  13. }
  14. return $temp;
  15. }
  16. </code>
  1. <code>fields里面调用
  2. public function fields()
  3. {
  4. return [
  5. 'id',
  6. 'company_id'
  7. 'user_count'=>function(){
  8. // return $this->getUserCount();
  9. $dep_ids=self::actionSon($this->company_id,$this->id);
  10. // $GLOBALS['temp']=[];
  11. //unset($temp);
  12. print_r($dep_ids);
  13. },
  14. ];
  15. }</code>

结果输出:

得出重复的数据,要是列表还有部门的话会这样一直重复下去,如何解决这个问题?
我需要的结果是每调用一次就能获取到当前部门下的所有子部门的id,以一维数组的形式展示。
把$GLOBALS['temp']=[];放开它只能找到一级。

人气教程排行