首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按id合并数组,并考虑具有重复关联索引的唯一值

按id合并数组,并考虑具有重复关联索引的唯一值
EN

Stack Overflow用户
提问于 2019-05-10 02:45:11
回答 1查看 20关注 0票数 0

我有这样的数组结构:

代码语言:javascript
复制
Array
(
    [platform] => Nintendo
    [console] => Nintendo NES
)
1
Array
(
    [platform] => Nintendo
    [console] => Super Nintendo
)
1
Array
(
    [platform] => Nintendo
    [console] => Nintendo 64
)
1
Array
(
    [platform] => Nintendo
    [console] => Gamecube
)
Array
(
    [platform] => Atari
    [console] => Atari 2600
)
1
Array
(
    [platform] => Atari
    [console] => Atari 5200
)
1
Array
(
    [platform] => Atari
    [console] => Atari 7800
)
Array
(
    [platform] => Sega
    [console] => Sega Master System
)
1
Array
(
    [platform] => Sega
    [console] => Sega Genesis
)
1
Array
(
    [platform] => Sega
    [console] => Sega CD
)

我想要将控制台合并到各自平台下的一个数组中,并了解如何使用唯一索引来执行此操作,而不是在它们相同的地方。我想要的输出是这样的:

代码语言:javascript
复制
Array
(
    [Nintendo] => Array
        (
            [0] => Nintendo NES
            [1] => Super Nintendo
            [2] => Nintendo 64
            [3] => Gamecube
        )

    [Atari] => Array
        (
            [0] => Atari 2600
            [1] => Atari 5200
            [2] => Atari 7800
        )

    [Sega] => Array
        (
            [0] => Sega Master System
            [1] => Sega Genesis
            [2] => Sega CD
        )

)

我尝试了以下几种方法:

代码语言:javascript
复制
$new = [];
foreach($arr as $key => $value){
  if(is_array($value)){
    if( !array_key_exists($value['platform'],$new) ){
        $new[$value['platform']] = [];
    }  
    $new[$value['platform']] = array_merge($new[$value['platform']], $value );
  }
} 

然而,它只返回每个平台中的最后一个控制台,因为它们没有唯一的控制台in。这是否需要正则表达式来查找匹配的平台名称和不匹配的控制台名称?我的方向是对的吗?还是应该向array_reducearray_walk看齐?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 02:54:44

不确定为什么要检查它是否是循环中的数组,您可以删除该部分,然后使用[]在控制台中将其添加到现有列表中。

代码语言:javascript
复制
$new = [];
foreach($arr as $key => $value){
    if( !array_key_exists($value['platform'],$new) ){
        $new[$value['platform']] = [];
    }  
    $new[$value['platform']][] = $value['console'] ;
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56065764

复制
相关文章

相似问题

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