Hello,

ça fait un petit moment que je me retourne le cerveau pour resoudre ce petit probleme mais sans succés.

J'ai un tableau de clé/valeur de ce type :

[
  "address_billing_city" => "cityName",
  "phone_personal_mobile" => "0600000000",
  "phone_personal_home" => "0300000000"
]

ce que je veux obtenir c'est un tableau imbriqué à partir de la clé du premier tableau et mettre la valeur dans la dernière, genre ca :

[
  "address" => [
    "billing" => [
        "city" => "cityName"
    ]
    "personal" => [
        "mobile" => "0600000000",
        "home" => "0300000000"
    ]
  ]
]

J'ai essayé plusieurs variantes avec un while, avec un for qui recupérer les clés par l'index. Mais la j'ai tellement cherché dans tous les sens que je n'arrive plus à réfléchir.
Je pense que le prochiane essaie, je vais essayer avec une fonction qui s'auto-rappel.

Si vous avez une piste.

Merci.

1 réponse


Amstramgram
Auteur
Réponse acceptée

ah au bout d'un moment, on fini par trouver.

private function pathToArray(&$array, string $path, &$value)
    {
        $pathParts = explode("_", $path);

        $current = &$array;
        foreach($pathParts as $key) {
            if (!is_array($current)) { $current = []; }
            $current = &$current[$key];
        }

        $backup = $current;
        $current = $value;

        return $backup;
    }