Créer un tableau contenant d'autres tableaux

Petit nouveau ! | 1 Messages

23 janv. 2022, 23:29

Bonsoir à toutes et à tous,

Je débute en php !
Je cherche différents petits exercices sur le net pour apprendre et pour m'améliorer !

Mais là j'en ai un qui me scotch un peu..

Je dois créer des fonctions qui me permettront d'obtenir et d'afficher ce tableau suivant :

array(1) {
[“Voiture”] =>
array(1) {
[“Renault”] =>
array(1) {
["Clio”] =>
string(6) “Type 1”
}
}
}

Pour cela je dois m'aider de
ma_marque($MarqueAAjouter $map)
mon_modele($ModeleAAjouter, $Marque, $map)
mon_type($TypeAAjouter, $Model, $Marque, $map)

Ca fait quelques heures que je suis dessus, avec différentes variantes de la fonction array, mais j'avoue que je sèche...

Merci d'avance, et bonne soirée !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 janv. 2022, 00:50

Pas besoin d'utiliser les fonctions array_*
Il s'agit de créer un tableau multidimensionnel, vois-le comme un répertoire avec des fichiers...

Voici la fonction pour ajouter un type, à toi de t'en inspirer pour ajouter une marque ou un modèle (ou plus exactement vu que marque et modèles sont des tableaux inspire-toi de ce qui suit :D )
function mon_type($TypeAAjouter, $Model, $Marque, $map) {
     $map['Voiture'][$Marque][$Model]=$TypeAAjouter;
     return $map;
}

$map=[];
$map = mon_type("Type 1", "Clio", "Renault", $map);

var_dump($map);
Cette fonction renvoie exactement ce que tu dois obtenir, toutefois je pense qu'il y a une erreur dans l'énoncé car cela veut dire que pour un modèle tu ne peux avoir qu'un seul type.
A mon sens, il faudrait que type soit un tableau et non pas un string afin de pouvoir en ajouter plusieurs.

Du coup, pour pouvoir ajouter plusieurs types ça donnerait qqch comme ça :
function mon_type($TypeAAjouter, $Model, $Marque, $map) {
     $map['Voiture'][$Marque][$Model][]=$TypeAAjouter;
     return $map;
}
Et si on veut améliorer, on peut aussi vérifier que le type n'existe pas déjà avant de l'ajouter afin d'éviter les doublons :
function mon_type($TypeAAjouter, $Model, $Marque, $map) {
     if (!@in_array($TypeAAjouter, $map['Voiture'][$Marque][$Model])) 
          $map['Voiture'][$Marque][$Model][]=$TypeAAjouter;
     return $map;
}
Quand tout le reste a échoué, lisez le mode d'emploi...