ホームページ  >  記事  >  バックエンド開発  >  PHP で多次元配列をドット表記キーを使用した 2 次元配列にフラット化するにはどうすればよいでしょうか?

PHP で多次元配列をドット表記キーを使用した 2 次元配列にフラット化するにはどうすればよいでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 07:09:02273ブラウズ

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

PHP のドット表記キーを使用して多次元配列を 2D 配列に変換する

PHP の多次元配列は、複雑なデータ構造を整理する便利な方法を提供します。ただし、場合によっては、多次元配列をドット表記キーを使用して 2 次元配列にフラット化することが必要になる場合があります。これは再帰的アプローチを使用して実現できます。

次の例を考えてみましょう:

<code class="php">$myArray = [
    'key1' => 'value1',
    'key2' => [
        'subkey' => 'subkeyval'
    ],
    'key3' => 'value3',
    'key4' => [
        'subkey4' => [
            'subsubkey4' => 'subsubkeyval4',
            'subsubkey5' => 'subsubkeyval5',
        ],
        'subkey5' => 'subkeyval5'
    ]
];</code>

この配列をドット表記キーを使用した 2 次元配列に変換するには、次のコードを使用できます。 :

<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>

このコードは、RecursiveIteratorIterator クラスと RecursiveArrayIterator クラスを使用して、多次元配列を再帰的に繰り返します。配列内の各リーフ値について、親配列と子配列のキーを結合することによってドット表記キーを作成します。結果は、以下に示すように、ドット表記キーを持つ新しい 2 次元配列になります。

<code class="php">[
    'key1' => 'value1',
    'key2.subkey' => 'subkeyval',
    'key3' => 'value3',
    'key4.subkey4.subsubkey4' => 'subsubkeyval4',
    'key4.subkey4.subsubkey5' => 'subsubkeyval5',
    'key4.subkey5' => 'subkeyval5'
]</code>

この手法は、処理または表示のためにフラット構造に変換する必要があるデータを操作する場合に特に役立ちます。 .

以上がPHP で多次元配列をドット表記キーを使用した 2 次元配列にフラット化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。