Question

Je vais essayer d'être bref, mais clair. Par exemple:

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

est-il possible de créer une sorte de boucle pour obtenir ce tableau multidimensionnel ?:

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

Vous ne savez pas à l'avance combien de temps le tableau $ FOO2 sera. J'espère que ma question est claire et de ne pas m'empêcher de demander.

Toute aide est la bienvenue! Merci d'avance!

Était-ce utile?

La solution

Je ne peux pas penser à un cas d'utilisation valide pour cela.Mais vous pouvez le faire avec des références (version modifiée de Cette réponse )

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

Démo


Une solution stupide et muette utilisant eval() . cela ne devrait pas être utilisé. Je le pose juste pour le plaisir de celui-ci;)

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

Démo

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top