Fonction ajoutant des valeurs à une variable

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Fonction ajoutant des valeurs à une variable

Re: Fonction ajoutant des valeurs à une variable

par Spols » 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)

Fonction ajoutant des valeurs à une variable

par Le paysan » 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