Fonction ajoutant des valeurs à une variable

Petit nouveau ! | 6 Messages

23 janv. 2015, 12:30

Bonjour, voilà mon code :
                    if (isset($tableauNiveau[1])) {                                             // Série de test pour déterminer à quel niveau on va ajouter les données
                        if (isset($tableauNiveau[2])) {
                            if (isset($tableauNiveau[3])) {
                                if (isset($tableauNiveau[4])) {
                                    if (isset($tableauNiveau[5])) {
                                        if (isset($tableauNiveau[6])) {
                                            if (isset($tableauNiveau[7])) {
                                                $donnees[$tableauNiveau[1]]["childCategorie"][$tableauNiveau[2]]["childCategorie"][$tableauNiveau[3]]["childCategorie"][$tableauNiveau[4]]["childCategorie"][$tableauNiveau[5]]["childCategorie"][$tableauNiveau[6]]["childCategorie"][] = $donneesAjout;
                                            }
                                        }
                                        if (!isset($tableauNiveau[6])) {
                                            $donnees[$tableauNiveau[1]]["childCategorie"][$tableauNiveau[2]]["childCategorie"][$tableauNiveau[3]]["childCategorie"][$tableauNiveau[4]]["childCategorie"][$tableauNiveau[5]]["childCategorie"][] = $donneesAjout;
                                        }
                                    }
                                    if (!isset($tableauNiveau[5])) {
                                        $donnees[$tableauNiveau[1]]["childCategorie"][$tableauNiveau[2]]["childCategorie"][$tableauNiveau[3]]["childCategorie"][$tableauNiveau[4]]["childCategorie"][] = $donneesAjout;
                                    }
                                }
                                if (!isset($tableauNiveau[4])) {
                                    $donnees[$tableauNiveau[1]]["childCategorie"][$tableauNiveau[2]]["childCategorie"][$tableauNiveau[3]]["childCategorie"][] = $donneesAjout;
                                }
                            }
                            if (!isset($tableauNiveau[3])) {
                                $donnees[$tableauNiveau[1]]["childCategorie"][$tableauNiveau[2]]["childCategorie"][] = $donneesAjout;
                            }
                        }
                        if (!isset($tableauNiveau[2])) {
                            $donnees[$tableauNiveau[1]]["childCategorie"][] = $donneesAjout;
                        }
                    }  
J'aimerais simplifier ce code en une fonction, qui, comme vous avez pu le comprendre, ajoute deux répertoires à un tableau en fonction du niveau.
Je n'ai pas trouvé comment modifier une variable en fonction d'un paramètre, je m'en remet donc à vous.

Merci d'avance,

Le paysan

Mammouth du PHP | 1967 Messages

30 janv. 2015, 11:01

Qu'arrive t il si tu as 6 niveaux ? je pense que ce cas est éludé par ton code.
le plus logique est qu'il manque un ! à la ligne
if (isset($tableauNiveau[7])) {
Si je suppose que c'est le cas et que tu ne veut pas te limité à 6 niveaux :
Moi je prendrais le tableau dans l'autre sens et j'ajouterait un (double) niveau à chaque itération
$donnees = array('childCategorie' => array($donneesAjout));
for ($i=sizeof($tableauNiveau)-;$i>=0;$i--) {//Je retire 2 à la taille du tableau pour arriver à l'avant dernier item.  Si je comprends bien ton code, un -1 devrait mieux convenir.  
$donnees = array('childCategorie' => array($tableauNiveau[$i] => $donnees));
}
Code non testé, mais il devrait te mettre sur la voie.

une autre solution pourrait être avec des fonction récursive (qui s'appelle elle même)
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube