按键嵌套的平面数组 [英] Flat array to nested by keys

查看:77
本文介绍了按键嵌套的平面数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试根据其键从平面创建嵌套数组.如果可以简化任务,则可以更改原始数组中键的格式.

I am trying to created nested array from flat based on its keys. Also format of keys in original array can be changed if it will simplify task.

发件人:

$arr = [
        'player.name' => 'Joe',
        'player.lastName' => 'Snow',
        'team.name' => 'Stars',
        'team.picture.name' => 'Joe Snow Profile',
        'team.picture.file' => 'xxx.jpg'
    ];

收件人:

$arr = [
        'player' => [
            'name' => 'Joe'
            , 'lastName' => 'Snow'
        ]
        ,'team' => [
            'name'=> 'Stars'
            ,'picture' => [
                'name' => 'Joe Snow Profile'
                , 'file' =>'xxx.jpg'
            ]
        ],
    ];

推荐答案

这是我的看法.
它应该能够处理任意深度

Here is my take on it.
It should be able to handle arbitrary depth

function unflatten($arr) {
    $result = array();

    foreach($arr as $key => $value) {
        $keys = explode(".", $key); //potentially other separator
        $lastKey = array_pop($keys);

        $node = &$result;
        foreach($keys as $k) {
            if (!array_key_exists($k, $node))
                $node[$k] = array();
            $node = &$node[$k];
        }

        $node[$lastKey] = $value;
    }

    return $result;
}

这篇关于按键嵌套的平面数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆