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 :

Ma fonction récursive me retourne un tableau vide


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Points : 121
    Points
    121
    Par défaut Ma fonction récursive me retourne un tableau vide
    Bonjour à tous,

    J'ai besoin de votre aide sur un problème, qui je suis sur est bidon, mais où je commence à m'agacer sur le problème que je ne parvient pas à régler.
    Donc j'ai besoin pour le traitement de deux fichiers CSV de remettre en ordre des informations.
    Le premier contient des valeurs rattachées à différentes section, bien évidement dans le désordre.
    Le second fichier contient les valeurs de début de chaque section qui me permettront de rattacher les suivantes.

    Après avoir récupérer le début de ma section, je stock les infos dans mon tableau qui me permettra de créer mon fichier CSV final et je lance ma fonction récursive qui va me ranger mes valeurs pour chaque section.
    Ma fonction fait bien son job et avant d'effectuer mon "return" lorsque je fait un "print_r" de mon tableau j'obtient bien mes valeurs classés.
    Maintenant quand je fais un "print_r" de la variable qui récupère le "return" de ma fonction celle ci n'ai rien d'autre qu'un tableau vide

    Voici mes bouts de code.

    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
     
    // Parcourt des première lignes présente dans le fichier 2
    for( $i .... ) 
    {
    /*
    		*	STOCKAGE DES INFOS DE LA PREMIERE LIGNE DANS UN TABLEAU
    		*/		
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_accrochage' 	][] = $tab_resultat_donnees_nacc_pre_trait[ $section_parcouru_nacc ][ 'val_accrochage' 		][ $cle_premiere_section ];
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_chaussee' 		][] = $tab_resultat_donnees_nacc_pre_trait[ $section_parcouru_nacc ][ 'val_chaussee' 		][ $cle_premiere_section ];
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_dates_mesures' 	][] = $tab_resultat_donnees_nacc_pre_trait[ $section_parcouru_nacc ][ 'val_dates_mesures' 	][ $cle_premiere_section ];
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_retroreflexion' ][] = $tab_resultat_donnees_nacc_pre_trait[ $section_parcouru_nacc ][ 'val_retroreflexion' 	][ $cle_premiere_section ];
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_evenement' 		][] = $tab_resultat_donnees_nacc_pre_trait[ $section_parcouru_nacc ][ 'val_evenement' 		][ $cle_premiere_section ];
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_sens_mesures' 	][] = $tab_resultat_donnees_nacc_pre_trait[ $section_parcouru_nacc ][ 'val_sens_mesures' 	][ $cle_premiere_section ];
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_ecod' 			][] = $tab_resultat_donnees_nacc_pre_trait[ $section_parcouru_nacc ][ 'val_ecod' 			][ $cle_premiere_section ];
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_ecof' 			][] = $tab_resultat_donnees_nacc_pre_trait[ $section_parcouru_nacc ][ 'val_ecof' 			][ $cle_premiere_section ];
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_ecoc' 			][] = $tab_resultat_donnees_nacc_pre_trait[ $section_parcouru_nacc ][ 'val_ecoc' 			][ $cle_premiere_section ];	
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_axe' 			][] = $section_parcouru_nacc;
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_plod' 			][] = $val_plod_premiere_ligne;
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_absd' 			][] = $val_absd_premiere_ligne;
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_plof' 			][] = $val_plod_seconde_ligne;
    		$tab_resultat_final[ $section_parcouru_nacc ][ 'val_absf' 			][] = $val_absd_seconde_ligne;
     
    		/*
    		*	STOCKAGE DES INFOS DES LIGNES SUIVANTE VIA LE FICHIER ACC
    		*/
    		$tab_resultat_a_renvoyer = array();
    		$tab_re = test_recursive( $section_parcouru_nacc, $val_ecof_premiere_ligne, $tab_resultat_donnees_acc_pre_trait, $tab_resultat_a_renvoyer );
     
    		echo "<pre>";
    		print_r( $tab_re );
    		echo "</pre>";
    }
    Voici le code la fonction

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    /*
    	*	FONCTION PERMETTANT DE REMETTRE DANS L'ORDRE LE RESTE DE LA SECTION
    	*/
    	function test_recursive( $section_parcouru, $val_ecof_ligne_a_analyser, $tab_resultat_donnees_acc_pre_trait, $tab_mon_resultat )
    	{
    		/*
    		*	SI la prochaine mesure de la section en cours est dans le fichier ACC
    		*	ALORS on a pas terminé de trier les mesures donc on continu
    		*/
    		if( in_array( $val_ecof_ligne_a_analyser, $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_ecod' ] ) )
    		{
    			// Récupération de la clé de la nouvelle valeur
    			$cle_nouvelle_valeur = array_search( $val_ecof_ligne_a_analyser, $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_ecod' ] );
     
    			// Ajout des valeurs de la ligne dans le tableau de résultat final
    			$tab_mon_resultat[ $section_parcouru ][ 'val_axe' 			][] = $section_parcouru;
    			$tab_mon_resultat[ $section_parcouru ][ 'val_accrochage' 	][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_accrochage' 		][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_chaussee' 		][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_chaussee' 			][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_dates_mesures' ][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_dates_mesures' 	][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_retroreflexion'][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_retroreflexion' 	][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_evenement' 	][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_evenement' 		][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_sens_mesures' 	][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_sens_mesures' 		][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_plod' 			][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_plod' 				][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_absd' 			][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_absd' 				][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_plof' 			][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_plof' 				][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_absf' 			][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_absf' 				][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_ecod' 			][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_ecod' 				][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_ecof' 			][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_ecof' 				][ $cle_nouvelle_valeur ];
    			$tab_mon_resultat[ $section_parcouru ][ 'val_ecoc' 			][] = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_ecoc' 				][ $cle_nouvelle_valeur ];			
     
    			$val_ecof_ligne = $tab_resultat_donnees_acc_pre_trait[ $section_parcouru ][ 'val_ecof' ][ $cle_nouvelle_valeur ];
     
    			test_recursive( $section_parcouru, $val_ecof_ligne, $tab_resultat_donnees_acc_pre_trait, $tab_mon_resultat);
    		}
    		/*
    		*	SINON on a terminé de trier les mesures de la section
    		*	ALORS on retourne le tableau de résultat
    		*/
    		else
    		{
    			$tab_result_a_renvoyer = array();
    			$tab_result_a_renvoyer = $tab_mon_resultat;
    			return $tab_result_a_renvoyer;
    		}	
    	}
    Vous remerciant par avance et dans l'attente de votre retour libérateur

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Points : 121
    Points
    121
    Par défaut
    Je viens de trouver mon erreur de débutant -_-

    En effet il me manquait "return" quand je faisait de nouveau appel à ma fonction.

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

Discussions similaires

  1. Fonction: retourner un tableau vide
    Par cheickna dans le forum Collection et Stream
    Réponses: 18
    Dernier message: 05/03/2014, 14h49
  2. Réponses: 1
    Dernier message: 30/05/2011, 14h33
  3. CaptureDeviceManager.getDeviceList Retourne un tableau vide
    Par franckarts dans le forum Multimédia
    Réponses: 0
    Dernier message: 01/08/2010, 15h40
  4. Réponses: 4
    Dernier message: 21/09/2008, 01h24
  5. Réponses: 4
    Dernier message: 18/09/2007, 10h46

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