PHP 二维数组根据相同的值进行合并
例如有一个二维数组 $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>";
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用