Page 1 sur 1

Fonction ajoutant des valeurs à une variable

Posté : 23 janv. 2015, 12:30
par Le paysan
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

Re: Fonction ajoutant des valeurs à une variable

Posté : 30 janv. 2015, 11:01
par Spols
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)