Conversion de tableaux multidimensionnels en tableaux 2D avec des clés de notation par points en PHP
Les tableaux multidimensionnels en PHP offrent un moyen pratique d'organiser des structures de données complexes. Cependant, il peut parfois s'avérer nécessaire d'aplatir un tableau multidimensionnel en un tableau bidimensionnel avec des clés de notation par points. Ceci peut être réalisé en utilisant une approche récursive.
Considérons l'exemple suivant :
<code class="php">$myArray = [ 'key1' => 'value1', 'key2' => [ 'subkey' => 'subkeyval' ], 'key3' => 'value3', 'key4' => [ 'subkey4' => [ 'subsubkey4' => 'subsubkeyval4', 'subsubkey5' => 'subsubkeyval5', ], 'subkey5' => 'subkeyval5' ] ];</code>
Pour convertir ce tableau en un tableau bidimensionnel avec des clés de notation par points, nous pouvons utiliser le code suivant :
<code class="php">$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray)); $result = []; foreach ($ritit as $leafValue) { $keys = []; foreach (range(0, $ritit->getDepth()) as $depth) { $keys[] = $ritit->getSubIterator($depth)->key(); } $result[join('.', $keys)] = $leafValue; }</code>
Ce code itère de manière récursive sur le tableau multidimensionnel, en utilisant les classes RecursiveIteratorIterator et RecursiveArrayIterator. Pour chaque valeur feuille du tableau, il crée une clé de notation par points en joignant les clés des tableaux parent et enfant. Le résultat est un nouveau tableau bidimensionnel avec des clés de notation par points, comme indiqué ci-dessous :
<code class="php">[ 'key1' => 'value1', 'key2.subkey' => 'subkeyval', 'key3' => 'value3', 'key4.subkey4.subsubkey4' => 'subsubkeyval4', 'key4.subkey4.subsubkey5' => 'subsubkeyval5', 'key4.subkey5' => 'subkeyval5' ]</code>
Cette technique peut être particulièrement utile lorsque vous travaillez avec des données qui doivent être converties en une structure plate pour le traitement ou l'affichage. .
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!