IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] incrémentation de 1 dans une fonction récursive


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut [Tableaux] incrémentation de 1 dans une fonction récursive
    Bonjour à tous,

    J'ai la fonction suivante qui me permet d'afficher les différentes sections contenus dans un tableau en fonction de leur lien de parenté.
    Ex :
    section mere
    --section fille 1
    --section fille 2
    ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    function displayMessage($mere,$sections,$tab_balises_section,$tab_objet_a_afficher,$tab_champ_a_aficher,$tab_balise_avant_champ,$tab_balise_apres_champ,$nb=0,$indentation="   "){
    	//print_r($tab_objet_a_afficher);
    	//on cré l'indentation en fonction du niveau ou l'on est
    	$decal = "";
    	for($i=0;$i<$nb;$i++){
    		$decal .= $indentation;
    	}
    	//on affiche le nom de la section
    	echo $decal.$tab_balises_section[0].$mere["S1"][0]["V"].$tab_balises_section[1]."<br>";
     
    	//on affiche les objets en lien avec la section
    	foreach($tab_objet_a_afficher as $i=>$v){
    		if($v["A1"]==$mere["S1"][0]["V"]){
    			$i = 0;
    			foreach($tab_champ_a_aficher as $indice=>$value){
    				echo $decal.$indentation.$tab_balise_avant_champ[$i].$v[$value][0]["VALUE"].$tab_balise_apres_champ[$i]."<br />";
    				$i++;
    			}
    		}
    	}
     
    	// on recupere toutes les sections filles de cette section
    	$i = 0;
    	while($mere["S1"][$i]["A1"]){
    		foreach($sections as $index=>$value){
    			if($value["A1"] == $mere["S1"][$i]["A1"]){
    				//pour chaque sections filles, on rappelle la fonction displayMessage()
    				displayMessage($value,$sections,$tab_balises_section,$tab_objet_a_afficher,$tab_champ_a_aficher,$tab_balise_avant_champ,$tab_balise_apres_champ,$nb+1,$indentation);
    			}
    		}
    		$i++;
    	}
    }
    J'aimerais pouvoir, a chaque fois que j'affiche le contenu d'une des sections ,
    mettre un "div=" avec un entier qui augmente de 1 a chaque fois.

    Si quelqu'un a une idée ca serait super cool !

    Merci d'avance.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Je sais pas si ce que tu attends mais essaye de faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for($i=0;$i<$nb;$i++){
    		$decal .= $indentation;
    	}
    echo '<div='.$compteur.'>';
    	//on affiche le nom de la section
    	echo $decal.$tab_balises_section[0].$mere["S1"][0]["V"].$tab_balises_section[1]."<br>";
    ou $compteur et une variable globale et bien sur tu fermes la balise et tu incrementes la variable avant de fermer ta fonction met vu que tu appelles ta foonction recursivement il y aura peut etre des erreurs de numerotation

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut
    Merci de ta réponse.

    J'ai créer une variable globale $compteur.

    Mais bon quand je fais dans ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	echo "<script>alert('".$compteur."');</script>";
    	$compteur++;
    Ca ne m'affiche rien.

  4. #4
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Pour avoir une variable globale, il faut la déclarer comme ca dans la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ma_variable = 1;
     
    function mafonction() {
      global $mavariable;
      ...
    }
    Sinon, pour revenir a ton problème, l'idée dans une fonction récursive, c'est de passer un parametre genre $profondeur, que tu incrémentes a chaque appel de la fonction. Comme ca, tu sais a quelle profondeur tu te trouves et tu peux agir en consequence.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  5. #5
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut
    Effectivement je n'avais pas mis le global $compteur dans ma fonction, ca marche mieux du coup .

    Merci bien !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer tous les id dans une fonction récursive
    Par renaud26 dans le forum jQuery
    Réponses: 2
    Dernier message: 02/06/2015, 20h49
  2. plantage dans une fonction récursive
    Par Lintel-oo dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2014, 21h16
  3. Réponses: 6
    Dernier message: 16/07/2012, 09h47
  4. [Tableaux] Récuperer variable dans une fonction
    Par amarcil dans le forum Langage
    Réponses: 12
    Dernier message: 12/02/2006, 10h56
  5. Réponses: 4
    Dernier message: 05/10/2005, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo