微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在php中创建动态数组键的字符串?

此数组是动态的,可以包含任意数量的记录,并且可以具有任何级别的嵌套数组:

Array
(
    [name] => richard
    [email] => richard@gmail.com
    [address] => Array
        (
            [city] => paris
            [zip] => 12121
        )

    [address1] => Array
        (
            [city] => paris
            [zip] => 12121
        )

    [address3] => Array
        (
            [city] => paris
            [zip] => 12121

        )

)

我试图从嵌套数组键构造一个字符串.
我需要使用循环从键构造这样的字符串:

结果应该是:

 address.city
   address.zip
   address1.city
   address1.zip....so on

如何使用递归实现?

解决方法:

这个递归函数会做你想要的.它检查数组当前级别的每个项目,如果是数组,则将当前键附加到该数组的所有键,并根据需要进行递归.如果该项不是数组,则将其键附加到该级别的输出.

function list_keys($array) {
    $output = array();
    foreach ($array as $k => $v) {
        if (is_array($v)) {
            foreach (list_keys($v) as $path) {
                $output[] = "$k.$path";
            }
        }
        else {
            $output[] = $k;
        }
    }
    return $output;
}

print_r(list_keys($array));

输出(适用于您的样本数据)

Array (
    [0] => name
    [1] => email
    [2] => address.city
    [3] => address.zip
    [4] => address1.city
    [5] => address1.zip
    [6] => address3.city
    [7] => address3.zip 
)

Demo on 3v4l.org

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐