У меня есть строка вроде этого:
$str = "eat.fruit.apple.good";
Я должен использовать этот массив следующим образом:
$arr["eat"]["fruit"]["apple"]["good"] = true;
Но я не понимаю, как я могу создать его динамически. Спасибо, Давиде
$str = "eat.fruit.apple.good"; // Set pointer at top of the array $arr = array(); $path = &$arr; // Path is joined by points foreach (explode('.', $str) as $p) // Make a next step $path = &$path[$p]; $path = true; print_r($arr); // $arr["eat"]["fruit"]["apple"]["good"] = true;
ОБНОВЛЕНИЕ Вариант без указателя:
$str = "eat.fruit.apple.good"; $res = 'true'; foreach(array_reverse(explode('.', $str)) as $i) $res = '{"' . $i . '":' . $res . '}'; $arr = json_decode($res, true);