/**
* Renvoie un tableau au format $array('name' => $nom, 'children' => array(array('name' => $nom, 'children' => ...), array('name' => $nom2, 'children' => ...))
* @param $inputArray tableau initial contenant tes données
* @param $nameToCheck nom de ta région pour récupérer les données
*/
function buildTree($inputArray, $nameToCheck){
$arrayFinal = array();
// On boucle sur la donnée initiale
foreach($inputArray as $data){
// Si on a le bon nom, on vérifie qu'il y ait ou non une liste d'enfants
if($data['name'] == $nameToCheck){
// Quoi qu'il en soit, on récupère le nom car il sera retourné
$arrayFinal['name'] = $data['name'];
// S'il y a des enfants, on renvoie un tableau d'enfants de format array(array('name' => x, 'children' => array()), array('name' => y, 'children' => ...))
if(is_array($data['children'])){
// Pour chaque enfant, tu récupère les infos le concernant. Ne pas oublier de passer le tableau initial, car il contient toutes les données dont tu as besoin
foreach($data['children'] as $childrenName){
$arrayFinal['children'][] = buildTree($inputArray, $childrenName);
}
}else{
// Si tu veux garder l'élément "children" présent dans ton tableau final, tu rajoutes ça
$arrayFinal['children'] = null;
}
}
}
return $arrayFinal;
}
// Données initiales que tu récupères
$inputData = array(
array('name' => 'Europe', 'children' => array('West','East')),
array('name' => 'West', 'children' => array('Germany','France')),
array('name' => 'Germany', 'children' => null),
array('name' => 'France', 'children' => null),
array('name' => 'East', 'children' => array('Boukoukastan','Roquefort-La-Bedoule')),
array('name' => 'Boukoukastan', 'children' => array('Ville1', 'Ville2')),
array('name' => 'Roquefort-La-Bedoule', 'children' => array('Ville3', 'Ville4')),
array('name' => 'Ville1', 'children' => null),
array('name' => 'Ville2', 'children' => null),
array('name' => 'Ville3', 'children' => null),
array('name' => 'Ville4', 'children' => null),
);
// Affiche la donnée initiale
echo '<pre>';
print_r($inputData);
echo '</pre>';
// Construit le tableau "relationnel"
$dataFinal = buildTree($inputData, 'Europe');
// Affiche le résultat
echo '<pre>';
print_r($dataFinal);
echo '</pre>';