如何使用点符号键将多维 PHP 数组转换为二维数组?

Mary-Kate Olsen
发布: 2024-10-28 00:24:29
原创
546 人浏览过

How to Convert Multidimensional PHP Arrays to 2D Arrays with Dot Notation Keys?

将多维 PHP 数组转换为带有点表示法键的二维数组

将多维 PHP 数组展平为带有点表示法键的二维数组可能有益于各种场景。它允许您使用点表示法无缝访问嵌套数组值,从而增强代码的可读性和可维护性。

转换嵌套数组的递归函数

幸运的是,PHP 提供了递归函数可以优雅地实现此转换的函数:

<code class="php">$result = array();
$ritit = new RecursiveIteratorIterator(new RecursiveArrayIterator($myArray));

foreach ($ritit as $leafValue) {
    $keys = array();
    foreach (range(0, $ritit->getDepth()) as $depth) {
        $keys[] = $ritit->getSubIterator($depth)->key();
    }
    $result[join('.', $keys)] = $leafValue;
}</code>
登录后复制

说明:

  • RecursiveIteratorIterator 和 RecursiveArrayIterator 类用于递归地迭代嵌套数组。
  • 在每次迭代期间,RecursiveArrayIterator 的 key 方法用于捕获数组的当前键。
  • getSubIterator($depth) 方法用于检索特定位置处的子迭代器深度,允许我们迭代嵌套数组。
  • range(0, $ritit->getDepth()) 函数创建一个深度数组,从最内层数组遍历到最外层数组。
  • join('.', $keys) 函数将数组键与点 (.) 作为分隔符连接起来,创建点符号键。
  • 生成的键值对存储在$result array.

输出:

此函数将生成带有点符号键的所需二维数组:

<code class="php">$newArray = array(
    '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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板