Maison  >  Article  >  développement back-end  >  Comment convertir des tableaux PHP multidimensionnels en tableaux 2D avec des clés de notation par points ?

Comment convertir des tableaux PHP multidimensionnels en tableaux 2D avec des clés de notation par points ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 00:24:29468parcourir

How to Convert Multidimensional PHP Arrays to 2D Arrays with Dot Notation Keys?

Convertir des tableaux PHP multidimensionnels en tableaux 2D avec des clés de notation par points

Aplatir des tableaux PHP multidimensionnels en tableaux 2D avec des clés de notation par points peut être bénéfique dans divers scénarios. Il vous permet d'accéder de manière transparente aux valeurs de tableaux imbriqués à l'aide de la notation par points, ce qui améliore la lisibilité et la maintenabilité du code.

Fonction récursive pour convertir des tableaux imbriqués

Heureusement, PHP fournit une fonction récursive fonction qui peut réaliser cette conversion avec élégance :

<code class="php">$result = array();
$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray));

foreach ($ritit as $leafValue) {
    $keys = array();
    foreach (range(0, $ritit->getDepth()) as $depth) {
        $keys[] = $ritit->getSubIterator($depth)->key();
    }
    $result[join('.', $keys)] = $leafValue;
}</code>

Explication :

  • Les classes RecursiveIteratorIterator et RecursiveArrayIterator sont utilisées pour parcourir le tableau imbriqué de manière récursive.
  • Lors de chaque itération, la méthode key du RecursiveArrayIterator est utilisée pour capturer la clé actuelle du tableau.
  • La méthode getSubIterator($profondeur) est utilisée pour récupérer le sous-itérateur à un emplacement spécifique. profondeur, nous permettant de parcourir des tableaux imbriqués.
  • La fonction range(0, $ritit->getDepth()) crée un tableau de profondeurs, passant du tableau le plus intérieur au tableau le plus extérieur.
  • La fonction join('.', $keys) concatène les clés du tableau avec un point(.) comme séparateur, créant ainsi la clé de notation par points.
  • La paire clé-valeur résultante est stockée dans le $result array.

Sortie :

Cette fonction générera le tableau 2D souhaité avec des clés de notation par points :

<code class="php">$newArray = array(
    'key1' => 'value1',
    'key2.subkey' => 'subkeyval',
    'key3' => 'value3',
    'key4.subkey4.subsubkey4' => 'subsubkeyval4',
    'key4.subkey4.subsubkey5' => 'subsubkeyval5',
    'key4.subkey5' => 'subkeyval5'
);</code>

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