Transformer une chaîne avec une structure de tableau en tableau
Problème :
Vous avez une chaîne représentant un tableau imbriqué structure, et vous devez le convertir en un tableau réel. Par exemple, étant donné la chaîne suivante :
Main.Sub.SubOfSub
Et une valeur de données :
SuperData
Vous souhaitez créer un tableau comme celui-ci :
Array
(
[Main] => Array
(
[Sub] => Array
(
[SubOfSub] => SuperData
)
)
)
Solution :
Pour transformer la chaîne en tableau, vous pouvez utiliser les étapes suivantes :
-
Diviser la chaîne en un tableau de clés : utilisez la fonction éclater() pour diviser la chaîne par le séparateur point (.). Cela vous donnera un tableau des clés dans la structure du tableau imbriqué.
-
Créez une référence à la racine du tableau : utilisez la variable &$target pour créer une référence à la racine du tableau. Cela vous permettra de modifier la structure du tableau au fur et à mesure que vous parcourez les clés.
-
Parcourez les clés : Parcourez les clés du tableau de clés. Pour chaque clé, vérifiez si elle existe dans le niveau actuel du tableau. Si ce n'est pas le cas, créez un nouveau tableau pour cette clé.
-
Mettre à jour la référence : Après avoir créé le tableau pour la clé actuelle, mettez à jour la référence pour pointer vers la nouvelle tableau. Cela vous permettra de parcourir plus loin dans la structure imbriquée.
-
Attribuer la valeur : Après avoir atteint le nœud feuille de la structure imbriquée, attribuez la valeur des données à la clé finale.
Voici un extrait de code qui montre les étapes :
<code class="php">$key = "Main.Sub.SubOfSub";
$target = array();
$value = "SuperData";
$path = explode('.', $key);
$root = &$target;
while(count($path) > 1) {
$branch = array_shift($path);
if (!isset($root[$branch])) {
$root[$branch] = array();
}
$root = &$root[$branch];
}
$root[$path[0]] = $value;</code>
Cet extrait de code créera la structure de tableau souhaitée, avec la valeur des données stockée dans la clé finale.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn