首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中组合/合并具有相同键的多维数组?

如何在PHP中组合/合并具有相同键的多维数组?
EN

Stack Overflow用户
提问于 2013-04-14 08:00:12
回答 1查看 97关注 0票数 2

所以我有这个数组,vardump看起来像这样:

代码语言:javascript
复制
array (size=4)
  0 => 
    array (size=1)
      'field_4' => 
        array (size=1)
          0 => string 'item-1' (length=6)
  1 => 
    array (size=1)
      'field_4' => 
        array (size=1)
          0 => string 'info-1' (length=6)
  2 => 
    array (size=1)
      'field_5' => 
        array (size=1)
          0 => string 'item-2' (length=6)
  3 => 
    array (size=1)
      'field_5' => 
        array (size=1)
          0 => string 'info-2' (length=6)

因此,我尝试将具有相同键的数组组合在一起,例如'field_4‘将合并/组合成一个包含两个项"item-1“和"info-1”的数组。

所以我想要的最终结果是:

代码语言:javascript
复制
array (size=2)
  0 => 
    array (size=1)
      'field_4' => 
        array (size=2)
          0 => string 'item-1' (length=6)
          1 => string 'info-1' (length=6)
  1 => 
    array (size=1)
      'field_5' => 
        array (size=1)
          0 => string 'item-2' (length=6)
          1 => string 'info-2' (lenght=6)

那么,有没有一个PHP方便的函数来处理这个问题,或者我必须重新构建数组?

谢谢你的关注。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-14 08:05:45

只需迭代输入数组,构建合并的数组:

代码语言:javascript
复制
$merged = array();
foreach ($input as $a)
    foreach ($a as $k => $v)
        foreach ($v as $v2)
            $merged[$k][] = $v2;

然后将其展平为您奇怪的所需输出:

代码语言:javascript
复制
$flattened = array();
foreach ($merged as $k => $v)
    $flattened[] = array($k => $v);

输入:

代码语言:javascript
复制
$input = array(
    array('field_4' => array('item-1')),
    array('field_4' => array('info-1')),
    array('field_5' => array('item-2')),
    array('field_5' => array('info-2')),
);

输出:

代码语言:javascript
复制
array(
    array('field_4' => array('item-1', 'info-1')),
    array('field_5' => array('item-2', 'info-2')),
)

在转储输出时,print_rvar_export是比var_dump更具可读性的示例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15994246

复制
相关文章

相似问题

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