Вопрос

Я постараюсь быть кратким, но ясно. Например:

$foo['test'] = array();
$foo2('test1','test2','test3','test4');
.

Можно ли создать какой-то цикл, чтобы получить этот многомерный массив?:

$foo['test']['test1']['test2']['test3']['test4'] = ...;
.

Вы заранее не знаете, как долго будет массив $ foo2. Я надеюсь, что мой вопрос ясен, а не переставать, чтобы спросить.

Любая помощь приветствует! заранее спасибо!

Это было полезно?

Решение

Я не могу думать о действительной корпусе использования для этого.Но вы можете сделать это со ссылками (модифицированная версия Этот ответ )

$foo['test'] = array();
$foo2 = array('test1','test2','test3','test4');

$result = array();
$temp = &$result;

foreach($foo2 as $value) {
    $temp[$value] = array();
    $temp = &$temp[$value];
}
unset($temp);
$foo['test'] = $result;
var_dump($foo);
.

demo


Тупое и глупуе решение с использованием eval() . это не следует использовать. Я размещаю его только ради удовольствия от этого;)

$foo2 = array('test1','test2','test3','test4');
eval("\$res['".join("']['",$foo2)."']=[];");
$foo['test'] = $res;
.

demo

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top