首页 >后端开发 >php教程 >如何将 PHP 中的多维数组展平为带有点符号键的二维数组?

如何将 PHP 中的多维数组展平为带有点符号键的二维数组?

Susan Sarandon
Susan Sarandon原创
2024-11-01 07:09:02357浏览

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

在 PHP 中使用点表示法键将多维数组转换为二维数组

PHP 中的多维数组提供了一种组织复杂数据结构的便捷方法。然而,有时可能需要将多维数组展平为具有点符号键的二维数组。这可以使用递归方法来实现。

考虑以下示例:

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

要将此数组转换为带有点表示法键的二维数组,我们可以使用以下代码:

<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 类。对于数组中的每个叶值,它通过连接父数组和子数组的键来创建点符号键。结果是一个带有点符号键的新二维数组,如下所示:

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

当处理需要转换为平面结构以进行处理或显示的数据时,此技术特别有用.

以上是如何将 PHP 中的多维数组展平为带有点符号键的二维数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn