Cas, Lors de l'exécution de sous-classes récursives infinies, dans la boucle foreach, les variables statiques seront accumulées dans chaque boucle. Si vous avez besoin que chaque boucle soit d'un seul type. Si c'est le cas, vous devez détruire les variables statiques à chaque fois que vous effectuez une boucle (Apprentissage recommandé : Programmation PHP du débutant à la maîtrise)
/** * 获取所有下级 * $data 用户数组 * $pid 用户user_id * $level 递归层次 * $bool_level 判断是否分级(不分级则获取所有的下级) * $clear 是否销毁静态变量 */ public function getTree($data, $pid = 0, $level = 0, $bool_level = true ,$clear=false ) { if ($pid < 1) { return false; } static $arr = []; if($clear){ $arr = null; static $arr = []; } if ($bool_level) { $level = $level - 1; } else { $level = 1; } if ($level >= 0) { foreach ($data as $key => $val) { if ($val['pid'] == $pid) { $arr[$level + 1][] = $val['id']; $this->getTree($data, $val['id'], $level, $bool_level); } } } return $arr; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!