Pregunta

Intentaré ser breve, pero claro. Por ejemplo:

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

¿Es posible crear algún tipo de bucle para obtener esta matriz multidimensional?:

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

No lo sabes de antemano cuánto tiempo será la matriz de $ Foo2. Espero que mi pregunta sea clara y no para que lo haga.

¡Cualquier ayuda es bienvenida! ¡Gracias de antemano!

¿Fue útil?

Solución

No puedo pensar en un caso de uso válido para esto.Pero puede hacerlo con las referencias (versión modificada de esta respuesta )

$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


Una solución estúpida y tonta usando eval() . Esto no debe usarse. Lo estoy publicando solo por la diversión de ello;)

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

demo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top