Pergunta

Tentarei ser breve, mas claro.por exemplo:

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

é possível criar algum tipo de loop para obter esse array multidimensional?:

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

Você não sabe antecipadamente quanto tempo o array $foo2 terá.Espero que minha pergunta seja clara e não pare de perguntar.

Qualquer ajuda é bem-vinda!desde já, obrigado!

Foi útil?

Solução

Não consigo pensar em um caso de uso válido para isso.Mas você pode fazer isso com referências (versão modificada do esta resposta)

$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);

Demonstração


Uma solução estúpida e idiota usando eval(). Isso não deve ser usado. Estou postando apenas por diversão ;)

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

Demonstração

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top