例如有一个二维数组 $arr:

$arr = array(
array(
'review_id' =>102 ,
'url'=>'a.jpg',
),
array(
'review_id' =>102 ,
'url'=>'b.jpg',
),
array(
'review_id' =>102 ,
'url'=>'c.jpg',
),
array(
'review_id' =>103 ,
'url'=>'aa.jpg',
),
array(
'review_id' =>103 ,
'url'=>'bb.jpg',
),
array(
'review_id' =>104 ,
'url'=>'aaa.jpg',
),
array(
'review_id' =>105 ,
'url'=>null,
),
array(
'review_id' =>106 ,
'url'=>null,
),
);

现在需要把相同 review_id 的数组的 url 进行合并,形成:

Array
(
[0] => Array
(
[review_id] => 102
[url] => Array
(
[0] => a.jpg
[1] => b.jpg
[2] => c.jpg
) ) [1] => Array
(
[review_id] => 103
[url] => Array
(
[0] => aa.jpg
[1] => bb.jpg
) ) [2] => Array
(
[review_id] => 104
[url] => aaa.jpg
) [3] => Array
(
[review_id] => 105
[url] =>
) [4] => Array
(
[review_id] => 106
[url] =>
) )

===

程序:

<?php
$arr = array(
array(
'review_id' =>102 ,
'url'=>'a.jpg',
),
array(
'review_id' =>102 ,
'url'=>'b.jpg',
),
array(
'review_id' =>102 ,
'url'=>'c.jpg',
),
array(
'review_id' =>103 ,
'url'=>'aa.jpg',
),
array(
'review_id' =>103 ,
'url'=>'bb.jpg',
),
array(
'review_id' =>104 ,
'url'=>'aaa.jpg',
),
array(
'review_id' =>105 ,
'url'=>null,
),
array(
'review_id' =>106 ,
'url'=>null,
),
); $res = array();
foreach($arr as $item) {
if(! isset($res[$item['review_id']])){
$res[$item['review_id']] = $item;
}else{
$res[$item['review_id']]['url'] .= ',' . $item['url']; //[url] => a.jpg,b.jpg,c.jpg
}
}
$res = array_values($res);
$a = array();
foreach ($res as $k => $v) {
if($v['url'] != "" && strpos($v['url'],",") !== false){
$a = explode(",", $res[$k]['url']);
$res[$k]['url'] = $a;
}
} echo "<pre>";
print_r($res);
echo "</pre>";

参考资料:http://bbs.csdn.net/topics/390940872

PHP 二维数组根据相同的值进行合并的更多相关文章

  1. PHP如何随机获取一个二维数组中的一个值

    获取一个数组: $awardid_list=pdo_fetchall('select id from '.tablename($this->table_award)); 这是微擎的写法哈,意思就 ...

  2. php将一个二维数组按照某个字段值合并成一维数组,如果有重复则将重复的合并成二维数组

    版权声明:本文为博主原创文章,未经博主允许不得转载. 最近工作中碰到一个问题,用PHP将一个二维数组按照二维数组中的各个项中的某个特定字段值合并成一维数组,如果有重复则将重复的合并成二维数组,生成的二 ...

  3. php 二维数组按照某value值求出最大值最小值

    //商家的等级信息是一个二维数组,求出最小折扣和最大折扣array(0=>array('levelname'=>'银','dis'=>7.5), 1=>array('level ...

  4. 二维数组按某个键值排序 FOR PHP

    $arr=[ array( 'name'=>'小坏龙', 'age'=>28 ), array( 'name'=>'小坏龙2', 'age'=>14 ), array( 'na ...

  5. PHP中如何对二维数组按某个键值进行排序

    $arr=[     array(         'name'=>'张三',         'age'=>28     ),     array(         'name'=> ...

  6. PHP二维数组按某个键值排序

    $data=Array(    [0] => Array        (            [id] => 2            [user_id] => 14       ...

  7. php 删除二维数组中某个key值

    /** * 根据key删除数组中指定元素 * @param array $arr 数组 * @param string/int $key 键(key) * @return array */ priva ...

  8. PHP按二维数组中的某个值重新排序数组 usort的使用方法

    $arr[0] = ['aa'=>123,'bb'=>'abc']; $arr[1] = ['aa'=>456,'bb'=>'dfe']; usort($arr,ss('aa' ...

  9. php 基础 二维数组以某个重复值累加

    $arr = array( array('id' => 123, 'name' => '张三', 'amount'=>'1'), array('id' => 123, 'nam ...

随机推荐

  1. java静态与非静态区别

    这里的静态,指以static关键字修饰的,包括类,方法,块,字段. 非静态,指没有用static 修饰的. 静态有一些特点: 1.全局唯一,任何一次的修改都是全局性的影响 2.只加载一次,优先于非静态 ...

  2. C++拷贝构造函数(深拷贝,浅拷贝)

    http://www.cnblogs.com/BlueTzar/articles/1223313.html 对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a;  ...

  3. 《Java程序性能优化》学习笔记 程序优化

    这一部分主要介绍代码层的优化.了解如何编写高效而精炼的代码,正确的使用函数方法.1.字符串优化处理Java语言中,String对象可以认为是对char数组的眼神和进一步封装.它主要由3部分组成:cha ...

  4. ubuntu下安装jdk

    参考:http://blog.csdn.net/gobitan/article/details/24322561 Ubuntu Linux下安装Oracle JDK Dennis Hu 2014-4- ...

  5. sdut 2411:Pixel density(第三届山东省省赛原题,字符串处理)

    Pixel density Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Pixels per inch (PPI) or pi ...

  6. c++ 复习内容

    . ]) { sizeof(str)=? } :// 函数行参仅是一个指针 . Typedef struct s* tPs; tPs p3,p4;//相等 struct s*p3,struct s*p ...

  7. java写入文件的几种方法分享

    转自:http://www.jb51.net/article/47062.htm 一,FileWritter写入文件 FileWritter, 字符流写入字符到文件.默认情况下,它会使用新的内容取代所 ...

  8. 建模算法(五)——图与网络

    (一)图与网络的基本概念 一.无向图 含有的元素为顶点,弧和权重,但是没有方向 二.有向图 含有的元素为顶点,弧和权重,弧具有方向. 三.有限图.无限图 顶点和边有限就是有限图,否则就是无限图. 四. ...

  9. MVC ActionResult视图结果

    摘要 MVC框架针对HttpResponse进行抽象与多态,使HttpResponse均可表示为ActionResult.那么,抽象和多态表现在哪里呢? //封装一个Action的结果. public ...

  10. topcoder SRM 594 DIV2 AstronomicalRecordsEasy

    此题主要考查的是求最长公共子序列 设A[i]:A[j] = a:b = ac:bc       B[ii]:B[jj] = c:d = ac:ad , 如果A[i]:A[j] = B[ii]:B[jj ...