我们经常都会有这样的需求,两个数组中某个字段关联,根据这个字段合并为一个数组,如下例子:

// 数组a的id  与 数组b的pid 关联
$a = [['id'=>1,'name'=>'a1'],['id'=>2,'name'=>'a2'],['id'=>3,'name'=>'a3']];
$b = [['pid'=>1,'money'=>100],['pid'=>2,'money'=>200],['pid'=>3,'money'=>'300']];// 假设我们需要得到最后的列表结果为
// [['id'=>1,'name'=>'a1','money'=>100],['id'=>2,'name'=>'a2','money'=>100],['id'=>3,'name'=>'a3','money'=>100]];
// 普通写法
foreach($a as $k1 => $v1){foreach($b as $k2 => $v2){if($v1['id'] == $v2['pid']){$a[$k]['money'] = $v2['money']}}
}
return $a;    //最终$a为我们需要的数据// 优化写法--重组数组b,将pid值设为健,money设为值,一一对应
$newArr = array_column($b,'money','pid'); //1参数为值,2参数为键
foreach($a as $k1 => $v1){$a[$k1]['money'] = $newArr[$v1['id']];
}
return $a

优化后明显数组b只需被循环一次,而优化前数组b需要循环count($a) 次,当数据多时性能还是有很大差异的;

常用PHP数组两层循环优化相关推荐

  1. python两层循环 循环完整体一个_Python编写循环的两个建议 | 鹅厂实战(文末有福利)...

    循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行.而**"循环"**,则是实现让机器不断重复工作的关键概念. 在 ...

  2. python两层循环 循环完整体一个_Python学习教程(Python学习路线):Python编写循环的两个建议...

    原标题:Python学习教程(Python学习路线):Python编写循环的两个建议 Python学习教程(Python学习路线):给大家总结了两个Python编写循环的建议 循环是一种常用的程序控制 ...

  3. 函数 —— strtok() 例如:Fred male 25,John male 62,Anna female 16两层循环

    //char *strtok(char *str, const char *delim) /*功能:  * 函数用来将字符串分割成一个个片段*/ /*参数:  * str -- 要被分解成一组小字符串 ...

  4. Mybatis中mapper文件中的两层循环

    导言 使用mapper.xml文件来存储和执行sql语句是Mybatis框架中重要的应用.在mapper.xml文件中对List数据的循环遍历较为普遍和常用,而两层或多层循环是大家不常用的.下面简单介 ...

  5. 都是❤️两层循环❤️的冒泡排序,选择排序,插入排序该怎么区分

    目录 冒泡排序 选择排序 插入排序 这三个排序都有两层循环这是他们表面的特点,我把外部循环叫大循环,内部循环叫小循环,他们算法根本思想都有相同点,就是将待排序序列分为无序区间和有序区间,每过一次大循环 ...

  6. Java:关于跳出两层循环的方法以及Label(标签)

    Java:关于跳出两层循环的方法以及Label(标签) HR曾问过我这样一个问题:Java中,如何跳出两层循环? 虽然当时没有说我的答案是错的,但也没完全认可.以下为对该问题的重新研究. 1. Lab ...

  7. python 跳出两层循环

    if __name__ == '__main__':# 外循环是从0到4,内循环是从6到9,如果内循环的j大于7时,跳出两层循环.# 使用 for...else解决,如下for i in range( ...

  8. 【素数问题】整理几种计算素数的算法,包含:两层循环,开根号法,埃氏筛选法,欧拉筛选法

    这篇文章主要介绍素数相关的算法问题,包含:两层循环判断,开根号法,埃氏筛选法,欧拉筛选法. 目录 一.什么是素数 二.素数计算几种方式 2.1.两层循环

  9. python 跳出两层循环,跳出多层循环

    pip install goto-statement @with_goto def range(start, stop):i = startresult = []label .beginif i == ...

最新文章

  1. string来存放二进制数据
  2. python学习-练习题兔子生长问题巩固
  3. 爱立信与Ooredoo签署5G新框架协议
  4. Python的locals()函数
  5. JAVA 文件锁 FileLock
  6. Table accessed during One order advanced search
  7. 比navicat更好用的工具_5118是查什么的?做什么用的?对比站长工具和爱站谁更好?...
  8. C#通用类库--短信猫操作类1(原始AT命令)
  9. 再谈谈ADO.NET Data Service
  10. jquery选择器详解
  11. 类worksheet的paste方法无效_英雄档案——类人体
  12. 各种VC9 VC11版本的Apache
  13. macbook历代_历代MAC机型配置汇总
  14. 新手向python实现淘宝自动抢购
  15. 科研写作——常见句式(九)
  16. Spring Boot中的配置文件使用以及重新加载
  17. 转载一份大佬的面试指南,命中率很高
  18. 如何一招永久删除hao123流氓网页挟持
  19. 纯翻译 GMSL2-CSI2 MAX9295和MAX9296配对通用过程 编程指南
  20. 华为无线ap由fit升级到fat的方法

热门文章

  1. 关于python打包exe文件的教程(专治痛点)
  2. vb.net 教程 3-10 窗体编程 datagridview控件 1 初步
  3. 第12章 光盘存储器的格式
  4. Typora使用学习通图床
  5. 游标cursor,游标循环和记录变量的定义
  6. 在数据库如何对表进行查询
  7. Bigemap打开AutoCAD文件格式(DWG DXF)
  8. http请求资源下载还是打开显示
  9. Word文档很乱怎么办 杂乱的文章word排版教程
  10. lua 报错:'=' expected near ' '