Bonjour,

Je vous sollicite pour la mise en place d'une fonction récursive.

Je n'arrive pas à la mettre en place.

J'ai un tableau qui liste les tables d'une base de données, et des sous-tableaux associés qui contiennent qui contiennent la clé étrangère de la table parente :

Exemple :

ARRAY([TABLE1] => ARRAY([0] => TABLE3 [1] => TABLE4) [TABLE3] => ARRAY([0] => TABLE2 [1] => TABLE5)) ...

Le but de ma fonction récursive est de trouver le meilleur chemin pour arrive d'une table X à une table Z.

La finalité : pouvoir constituer automatiquement les jointures entre table pour mettre en place une requête dynamique.

Voici la fonction mise en place :

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
 
print_r(test($tables,"SLE_L1"));
 
	FUNCTION test($tables,$element){	
		$return = ARRAY();
		IF($element == "MAIS_STOCK_S1"){
			RETURN $return;
		}
		ELSE{
			IF(ISSET($tables[$element])){
				FOREACH($tables[$element] AS $enfant){
					//ECHO $element."   ////       ";
					//print_r($enfant);  ECHO "</br>";
					$return[$element][] = $enfant;
					$return = ARRAY_MERGE(test($tables,$enfant),$return);
				}
			}
				RETURN $return;
		}
 
	}
Cette fonction me retourne bien des données mais cela ne correspond pas à mon chemin optimal.

Je demande votre aide donc, si vous avez besoin d'information complémentaire n'hésitez pas !

Cordialement