【问题标题】:Merge arrays (PHP)合并数组 (PHP)
【发布时间】:2011-06-18 02:44:09
【问题描述】:

如何以这种方式组合数组?

来源:

Array
(
   [0] => Array
       (
           [id] => 3
           [title] => book
           [tval] => 10000
       )
   [1] => Array
       (
           [id] => 3
           [title] => book
           [tval] => 1700
       )
   [3] => Array
       (
           [id] => 27
           [title] => fruit
           [tval] => 3000
       )

.......

)

结果:

Array
(
   [0] => Array
       (
           [id] => 3
           [title] => book
           [tval] => 10000,1700
       )
   [1] => Array
       (
           [id] => 27
           [title] => fruit
           [tval] => 3000
       )
.......

) 

请帮忙解决这个问题, 谢谢!!! 对不起英语不好(

【问题讨论】:

标签: php arrays merge


【解决方案1】:

简单地在user576875的方法上构建:

$a = array ( 0 => array ( 'id' => 3,
                          'title' => 'book',
                          'tval' => 10000
                        ),
            1 => array  ( 'id' => 3,
                          'title' => 'book',
                          'tval' => 1700
                        ),
            3 => array  ( 'id' => 27,
                          'bcalias' => 'fruit',
                          'tval' => 3000
                        )
          );

$result = array();
foreach ($a as $elem) {
    $key = $elem['id'];
    if (isset($result[$key])) {
        $result[$key]['tval'] .= ',' . $elem['tval'];
    } else {
        $result[$key] = $elem;
    }
}
$result = array_merge($result);

var_dump($result);

给出以下结果:

array
  0 => 
    array
      'id' => int 3
      'title' => string 'book' (length=4)
      'tval' => string '10000,1700' (length=10)
  1 => 
    array
      'id' => int 27
      'bcalias' => string 'fruit' (length=5)
      'tval' => int 3000

唯一真正的区别是 array_merge() 重置键

【讨论】:

  • 感谢您的详细解答!
  • @Vadim - 很高兴看到您将功劳归功于 user576875 ...我所做的只是证明他的方法有效
  • array_values() 也可以使用 :-)
  • @user576875 - 确实,我只是在证明您的代码有效之后才使用它
【解决方案2】:

这应该可行:

$result = array();
foreach($array as $elem) {
    $key = $elem['id'];
    if (isset($result[$key])) {
        $result[$key]['tval'] .= ',' . $elem['tval'];
    } else {
        $result[$key] = $elem;
    }
}

这基本上按id 对元素进行分组,连接tvals(由, 分隔)。

【讨论】:

  • @Vadim 以何种方式无法正常工作?当人们抽出时间来帮助您时,请感激您,而您则通过提供更多帮助来感激自己,以便其他人可以帮助您。
  • 结果只有一个数组为空(逗号分隔)[tval]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多