adicione uma lista de chaves a um array multidimensional
-
26-12-2019 - |
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!
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);
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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow