例如有一个二维数组 $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. Android之Fragment(二)

    本文主要内容 如何管理Fragment回退栈 Fragment如何与Activity交互 Fragment与Activity交互的最佳实践 没有视图的Fragment的用处 使用Fragment创建对 ...

  2. Android之自定义控件深入

    本文主要讲述两个知识点:popwindow的使用和通过继承View实现一个自定义控件,实现点击,手动按钮的效果. popwindow的使用 //定义 popupWindow popWin = new ...

  3. Toolbar标题栏

    <android.support.v7.widget.Toolbar android:id="@+id/tool_bar" android:layout_width=&quo ...

  4. 在Windows下利用MinGW编译FFmpeg

    目录 [隐藏]  1 环境与软件 2 第一步:安装MinGW 3 第二步:配置编译环境 4 第三步:配置SDL 5 第四步:编译 5.1 编译faac 5.2 编译fdk-aac 5.3 编译x264 ...

  5. 绑定GoDaddy域名到OpenShift应用

    一.申请GoDaddy域名 二.托管OpenShift应用 三.绑定www.mydomain.com 四.重定向mydomin.com到www.mydomain.com 五.It's go time ...

  6. node基础 --全局

    全局对象: global:永远使用var 定义变量以避免引入全局变量; process:所有全局执行上下文的内容都在process对象中: 模块和包: 模块:一个Node.js 文件就是一个模块,这个 ...

  7. bzoj1028 [JSOI2007]麻将

    1028: [JSOI2007]麻将 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1337  Solved: 601[Submit][Status][ ...

  8. Javascript中call的使用

    Javascript中call的使用自己感觉蛮纠结的,根据文档很好理解,其实很难确定你是否真正的理解. call 方法应用于:Function 对象调用一个对象的一个方法,以另一个对象替换当前对象.c ...

  9. CSS Counters 计数属性

    CSS Counters其实就是一计数器,早期在CSS中计数器仅存在于ul和ol元素.如果要使用在div这样的元素上,只能通过list-style-image或者是元素的backgroud-image ...

  10. topcoder SRM 591 DIV2 TheArithmeticProgression

    #include <iostream> #include <cstdlib> using namespace std; class TheArithmeticProgressi ...