Maison >développement back-end >tutoriel php >Comment aplatir des tableaux multidimensionnels en PHP en un tableau bidimensionnel avec des clés de notation par points ?

Comment aplatir des tableaux multidimensionnels en PHP en un tableau bidimensionnel avec des clés de notation par points ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 07:09:02331parcourir

How do you flatten multidimensional arrays in PHP into a two-dimensional array with dot notation keys?

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!

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