php 把多维数组中,某值相同的项合并,重组数据(不用再愁postgres中无mysql中的group_concat()功能)
对数组$array重组:$array = array(array('id'=>1,'name'=>'aa','pwd'=>'12'),array('id'=>1,'name'=>'bb','pwd'=>'56'),array('id'=>1,'name'=>'saa','pwd'=>'89'),array('id'=>2,'name'=>'cc','pwd'=>'78'));
实现代码如下:$tmpArray = array();foreach ($array as $row) {$key = $row['id'];if (array_key_exists($key, $tmpArray)) {//$tmpArray[$key]['pwd'] = $tmpArray[$key]['pwd'] . ',' . $row['pwd']; //用这句的话下面有关pwd的条件语句都要删掉,实现其字符串形式if (is_array($tmpArray[$key]['name'])) {$tmpArray[$key]['name'][] = $row['name'];} else {$tmpArray[$key]['name'] = array($tmpArray[$key]['name'], $row['name']);}if (is_array($tmpArray[$key]['pwd'])) {$tmpArray[$key]['pwd'][] = $row['pwd'];} else {$tmpArray[$key]['pwd'] = array($tmpArray[$key]['pwd'], $row['pwd']);}} else {$tmpArray[$key] = array('id'=>$row['id'],'name'=>array($row['name']),'pwd'=>array($row['pwd'])); //此句要注意,可设置// $tmpArray[$key] = $row; // 有字段相加时可能会代替上面一句}}echo "<pre>";var_dump($tmpArray);打印结果为:array (size=2)1 => array (size=3)'id' => int 1'name' => array (size=3)0 => string 'aa' (length=2)1 => string 'bb' (length=2)2 => string 'saa' (length=3)'pwd' => array (size=3)0 => string '12' (length=2)1 => string '56' (length=2)2 => string '89' (length=2)2 => array (size=3)'id' => int 2'name' => array (size=1)0 => string 'cc' (length=2)'pwd' => array (size=1)0 => string '78' (length=2)
实现了用上面的id值来分组。
// $field 为一维数字数组,$field[0]为用于分组的单一字段。 public function combine($array,$field){$tmpArray = array();$distinct_field = $field[0];unset($field[0]);foreach ($array as $row) {$key = $row[$distinct_field];if (array_key_exists($key, $tmpArray)) {foreach($field as $value){if (is_array($tmpArray[$key][$value])) {$tmpArray[$key][$value][] = $row[$value];} else {$tmpArray[$key][$value] = array($tmpArray[$key][$value], $row[$value]);}}} else {$tmpArray[$key][$distinct_field] = $row[$distinct_field];foreach ($field as $value){$tmpArray[$key][$value] = array($row[$value]);}}}return $tmpArray;}
php 把多维数组中,某值相同的项合并,重组数据(不用再愁postgres中无mysql中的group_concat()功能)相关推荐
- php 二位数组去掉重复,PHP 二维数组去掉重复值并保持原结构
PHP 二维数组去掉重复值并保持原结构 直接上代码,解释很详细 //二维数组去掉重复值 function arrunique($a){ foreach($a[0] as $k => $v){ / ...
- 动态二维数组外圈元素值的和_C语言 | 用指向元素的指针变量输出二维数组元素的值...
例33:有一个3*4的二维数组,要求用C语言实现指向元素的指针变量输出二维数组个元素的值. 解题思路:二维数组的元素时整型的,它相当于整型变量,可以用int*型指针变量指向它.二维数组的元素在内存中是 ...
- PHP 二维数组去掉重复值并保持原结构
不得不说PHP的数组功能真的是非常强大. 下面直接上PHP的二维数组去掉重复值并保持原结构的 代码: //二维数组去掉重复值 function arrunique($a){ foreach($a[0] ...
- 利用循环,使得10 * 10的二维数组具有以下值,并按以下结构输出在屏幕上
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p113 习题4 5.利用循环,使得10 * 10的二维数组具有以下值,并按以下结构输出在屏幕上 0 1 ...
- php-使用函数array_walk_recursive处理多维数组的键值后返回一个新数组
php-使用函数array_walk_recursive处理多维数组的键值后返回一个新数组 $result = array(); //$content是一个多维数组 $walk = array_wal ...
- 【C 语言】二级指针内存模型 ( 指针数组 | 二维数组 | 自定义二级指针 | 将 一、二 模型数据拷贝到 三 模型中 并 排序 )
文章目录 一.指针数组 和 二维数组 数据 拷贝到 自定义二级指针 中 1.函数形参 设计规则 2.三种内存模型 对应 函数形参 指针退化规则 二.完整代码示例 一.指针数组 和 二维数组 数据 拷贝 ...
- php 二维数组根据键值合并二维数组_php数组根据某键值,把相同键值的合并最终生成一个新的二维数组...
匿名用户 1级 2013-12-29 回答 php数组根据某一个键值,把相同键值的合并生成一个新的二维数组 源数据: $infos = array( array( 'a' => 36, 'b' ...
- PHP二维数组去除重复值
$excel_array = [['a'],['b'],['a']]; $array=[]; foreach($excel_array as $key=>$v){if(in_array($v[0 ...
- C如何将二维数组作为返回值
做大作业遇到这样一个问题:在子函数里申请了一个二维数组,在主函数里要用到二维数组里的数据,但是在主函数里又不能提前申请(因为不知道数组长度),所以需要将数组return得到. 子函数: float * ...
最新文章
- Leetcode 1
- VS2010中文注释带红色下划线的解决方法
- python界面图片-python如何实现读取并显示图片(不需要图形界面)
- 剑指offer:反转链表
- 再次搬家到自建博客http://www.wikieee.com/blog/leiad/homepage
- 在 CTreeCtrl 中枚举系统中的所有窗口!(I)
- Linux下强制某登录用户下线
- Python--day45--pymysql模块初识以及SQL注入
- 360安全浏览器安装adblock plus
- 如何实现用串口助手实时绘制16位数据波形图
- T5: Linux查看cpu信息,是否支持avx2指令集
- 另辟蹊径--极简Swifty路由
- onblur onchange
- 关于Mysql中的生日提醒
- 密码加密md5和加盐处理
- 服务器开机显示f1 f2,开机按f1的解决方法|开机按f2的解决方法|电脑开机按f1怎么解决...
- 工作11年后一切归零
- 蜂窝移动网络是什么,它和 Wi-Fi 有什么区别? 蓝牙和无线有什么区别?
- COVID-19检测方法汇总
- springboot 启动非常慢(超过80秒)解决方案