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

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

Susan Sarandon
发布: 2024-11-01 07:09:02
原创
322 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板