Je vous salut chers Alsanautes. Le titre du post n'est pas très parlant mais bon...
J'ai un petit soucis et j'aurai besoin de votre aide une fois de plus.
Dans toute mon appli j'ai des fichiers de configurations ayant des tableaux
structurés de la manière suivante
J'ai donc envie de créer une fonction à travers laquelle on pourra récupérer une valeur du tableau simplement.
En faisant par exemple
Le but est de parcourrir l'arborescence à chaque point(.) jusqu'à atteindre l'élément souhaité.
J'ai fait un petit script qui fonctionne mais qui n'est pas évolutif (puisque si le tableau va au délàs de 5 niveaux, la fonction s'arrête)
Je souhaiterai donc faire un script capable de parcourrir tout le tableau quelque soit sa profondeur. Si vous avez une solution pour moi j'en serai ravi
Modifié par Dimtrovich (26 Jul 2020 - 16:19)
J'ai un petit soucis et j'aurai besoin de votre aide une fois de plus.
Dans toute mon appli j'ai des fichiers de configurations ayant des tableaux
structurés de la manière suivante
$conf = [
'db' => [
'host' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'test',
'options', => [
'case' => 'inherit'
]
],
'layout' => [
'styles' => [
'vendor' => [
'bootstrap' => ['bootstrap', 'bootstrap-theme'],
'fontawesome'
]
],
'scripts' => ['jquery', 'datatables']
]
];
J'ai donc envie de créer une fonction à travers laquelle on pourra récupérer une valeur du tableau simplement.
En faisant par exemple
$host = get('db.host'); // retourne localhost
$case = get('db.options.case'); // retourne inherit
$vendor = get('layout.styles.vendor.bootstrap'); // retourne ['bootstrap', 'bootstrap-theme']
Le but est de parcourrir l'arborescence à chaque point(.) jusqu'à atteindre l'élément souhaité.
J'ai fait un petit script qui fonctionne mais qui n'est pas évolutif (puisque si le tableau va au délàs de 5 niveaux, la fonction s'arrête)
public static function get(?string $conf = null)
{
if (null === $conf)
{
return self::$_config;
}
$conf = explode('.', $conf);
$count = count($conf);
if ($count == 1)
{
return self::$_config[$conf[0]] ?? null;
}
if ($count == 2)
{
return self::$_config[$conf[0]][$conf[1]] ?? null;
}
if ($count == 3)
{
return self::$_config[$conf[0]][$conf[1]][$conf[2]] ?? null;
}
if ($count == 4)
{
return self::$_config[$conf[0]][$conf[1]][$conf[2]][$conf[3]] ?? null;
}
if ($count == 5)
{
return self::$_config[$conf[0]][$conf[1]][$conf[2]][$conf[3]][$conf[4]] ?? null;
}
return null;
}
Je souhaiterai donc faire un script capable de parcourrir tout le tableau quelque soit sa profondeur. Si vous avez une solution pour moi j'en serai ravi
Modifié par Dimtrovich (26 Jul 2020 - 16:19)