首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套多维数组到单个多维数组

嵌套多维数组到单个多维数组
EN

Stack Overflow用户
提问于 2017-07-01 20:01:19
回答 1查看 68关注 0票数 1

我已经找到了许多将多维数组转换为一维数组的示例。我需要将数组中的数据放在一起,只需将它们从嵌套中取出并放入第一个主数组中。

下面是数组:

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [id] => 2
            [username] => user2
            [downline] => Array
                (
                    [0] => Array
                        (
                            [id] => 5
                            [username] => user5
                            [downline] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 9
                                            [username] => user9
                                            [downline] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 15
                                                            [username] => user15
                                                        )
                                                    [1] => Array
                                                        (
                                                            [id] => 16
                                                            [username] => user16
                                                        )
                                                )
                                        )
                                    [1] => Array
                                        (
                                            [id] => 10
                                            [username] => user10
                                            [downline] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 17
                                                            [username] => user17
                                                        )
                                                )
                                        )
                                )
                        )
                )
        )
    [1] => Array
        (
            [id] => 3
            [username] => user3
            [downline] => Array
                (
                    [0] => Array
                        (
                            [id] => 6
                            [username] => user6
                            [downline] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 11
                                            [username] => user11
                                            [downline] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 18
                                                            [username] => user18
                                                        )
                                                )
                                        )
                                )
                        )
                )
        )
    [2] => Array
        (
            [id] => 4
            [username] => user4
            [downline] => Array
                (
                    [0] => Array
                        (
                            [id] => 7
                            [username] => user7
                            [downline] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 12
                                            [username] => user12
                                            [downline] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 19
                                                            [username] => user19
                                                        )
                                                )
                                        )
                                )
                        )
                    [1] => Array
                        (
                            [id] => 8
                            [username] => user8
                            [downline] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 13
                                            [username] => user13
                                        )
                                    [1] => Array
                                        (
                                            [id] => 14
                                            [username] => user14
                                        )
                                )
                        )
                )
        )
)

这是为了给他们所有的团队成员发消息。我不在乎他们是谁,我只需要一个完整的所有用户的运行列表,这样我就可以循环通过并在系统中发送给他们一条消息。

下面是我试图得到的最后一个数组的示例:

代码语言:javascript
复制
[
    [id] => 2
    [username] => user2
],
[
    [id] => 5
    [username] => user5
],
[
    [id] => 9
    [username] => user9
],
[
    [id] => 15
    [username] => user15
],
[
    [id] => 16
    [username] => user16
],
[
    [id] => 10
    [username] => user10
],
[
    [id] => 17
    [username] => user17
],
[
    [id] => 3
    [username] => user3]
],
// ... and so on

理想情况下,数组键可以是它们的用户id。这将在下拉菜单中进行,在该菜单中,他们可以选择团队中的一名成员,也可以向所有成员发送消息。就像这样:

代码语言:javascript
复制
[
    1 => 'user1',
    2 => 'user2',
    9 => 'user9',
]

我试过array_mergearray_walk_recursive的变体。所有的东西都会变成一个丑陋的一维数组。

像这样的东西,却没有用:

代码语言:javascript
复制
function flatten(array $arr) {
    return array_reduce($arr, function ($c, $a) {
        return is_array($a) ? array_merge($c, flatten($a)) : array_merge($c, [$a]);
    },
    []);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-01 20:15:24

使用array_walk_recursive函数的解决方案(收集相应的id/用户名对):

代码语言:javascript
复制
// $arr is your initial array
$result = [];
array_walk_recursive($arr, function($v, $k) use (&$result){  
    if ($k == 'id') $result[] = ['id'=> $v];
    if ($k == 'username') {
        $result[count($result)-1]['username'] = $v;
    }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44864929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档