J'ai une liste de clés de tableau et niveau de nidification dans un tableau, par exemple: Comment puis-je transformer cela en une matrice multidimensionnelle dans le format suivant: p> XXX PRE> J'ai essayé quelques variantes différentes qui n'ont pas fonctionné et que les clés se sont écrasées. Le moyen le plus simple est d'obtenir un nombre de numéros de clés et de couvrir manuellement chaque scénario, mais cela n'est guère optimisé et ne pousse pas de manière dynamique. P> $keyLen = count($keys);
if ($keyLen == 1) {
$array[$keys[0]] = 'value;
} elseif ($keyLen == 2) {
$array[$keys[0]][$keys[1]] = 'value;
} elseif ($keyLen == 3) {
$array[$keys[0]][$keys[1]][$keys[2]] = 'value';
} ...
5 Réponses :
Vous pouvez revenir en arrière via votre tableau d'entrée et envelopper le résultat précédent au fur et à mesure que vous allez: à l'extrémité $ imbriquée code> aura la structure souhaitée. < / p> p>
Quelques celles-ci répondent à ma question mais vous étiez d'abord. Ça fera l'affaire!
Donnez cela un essai. Nous utilisons ici des références pour empiler nos nouveaux tableaux.
<?php $keys = array('first', 'second', 'third'); $array = array(); $current = &$array; foreach($keys as $key => $value) { $current[$value] = array(); $current = &$current[$value]; } $current = 'Hello world!'; print_r($array);
À partir du dernier élément, vous pouvez faire une boucle via la matrice, affichez la dernière et construisez le nouveau tableau:
<?php $keys[0] = 'first'; $keys[1] = 'second'; $keys[2] = 'third'; function createKey($array) { $b = "value"; while(count($array)>0) { $key = array_pop($array); $b = [$key => $b]; } return $b; } var_dump(createKey($keys)); // Output: array(1) { ["first"]=> array(1) { ["second"]=> array(1) { ["third"]=> string(5) "value" } } }
Une autre option consiste à boucler les touches inversées et à envelopper le résultat précédent: puis vous pouvez définir votre valeur: p> Demo P> P>
Vous pouvez même ou avec un compteur supplémentaire encore plus simple et plus court : p> eval code> de manière sûre sans fuite de données d'entrée dans la chaîne EVAL-String:
Quelles sont les valeurs? Est-ce une chaîne statique
'valeur' code>?
Où avez-vous la valeur code> code>? C'est le dernier article de votre tableau?
Je suggérerais une fonction récursive - mais du dernier élément (Key2) au premier élément (Key0). Ou peut-être qu'une boucle commence à partir du dernier article fera.
SoftwareEngineering.stackexchange.com/Questtions/80084/...
@Dharman J'ai déclaré au bas de la question que la valeur n'a pas d'importance. Je suis capable de peupler cette partie, c'est l'arrangement des clés que je ne peux pas optimiser.