Bonjour j'ai écris une fonction récursive en php qui me range un tableau de tableau sous forme recursive aussi, cependant lors de l'execution j'ai cette erreur :
Only variables can be passed by reference in \include\classes\menu.php
Le tableau à rangé un retour de requete sql, voici les données :
Voici le code qui génère l'erreur :
public function Menu(){
$bdd = new Bdd($_SESSION['connect']);
$categorie = $bdd->getCategories(); //On recupere toutes les categories sans distinction
$nbrcategorie = count($categorie); //Calcul du nombre de categorie récupéré
$this->menu['nbrmenu'] = 0; //Au depart le menu à 0 categorie principale
for ($i = 0 ; $i < $nbrcategorie; $i++){ //Construction de l'arborescence sous forme de schema recursif
$this->ajouterCategorie($categorie[$i],$this->menu, 0);
}
}
private function ajouterCategorie(&$categorie, &$menucourant, $idcourant){
if ($categorie['parent'] == 0){
$menucourant[$menucourant['nbrmenu']] = $categorie;
$menucourant[$menucourant['nbrmenu']]['sousmenu']['nbrmenu'] = 0;
$menucourant['nbrmenu'] = $menucourant['nbrmenu'] + 1;
}else{
if ($categorie['parent'] == $menucourant[$idcourant]['id']){
$menucourant[$idcourant]['sousmenu'][$menucourant[$idcourant]['sousmenu']['nbrmenu']] = $categorie;
$menucourant[$idcourant]['sousmenu'][$menucourant[$idcourant]['sousmenu']['nbrmenu']]['sousmenu']['nbrmenu'] = 0;
$menucourant[$idcourant]['sousmenu']['nbrmenu'] = $menucourant[$idcourant]['sousmenu']['nbrmenu'] + 1;
}elseif ($menucourant[$idcourant]['sousmenu'] != null){
$this->ajouterCategorie($categorie, $menucourant[$idcourant]['sousmenu'], 0);
}
if ($idcourant < $menucourant['nbrmenu']){
$this->ajouterCategorie($categorie, $menucourant[$idcourant+1], $idcourant+1);
}
}
}
L'erreur est sur la ligne $this->ajouterCategorie($categorie, $menucourant[$idcourant+1], $idcourant+1);
En esperant que vous pourrez m'aider.
www.e-fitz.com
Encore plus de sources et de tutoriels.