常用PHP数组两层循环优化
我们经常都会有这样的需求,两个数组中某个字段关联,根据这个字段合并为一个数组,如下例子:
// 数组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数组两层循环优化相关推荐
- python两层循环 循环完整体一个_Python编写循环的两个建议 | 鹅厂实战(文末有福利)...
循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行.而**"循环"**,则是实现让机器不断重复工作的关键概念. 在 ...
- python两层循环 循环完整体一个_Python学习教程(Python学习路线):Python编写循环的两个建议...
原标题:Python学习教程(Python学习路线):Python编写循环的两个建议 Python学习教程(Python学习路线):给大家总结了两个Python编写循环的建议 循环是一种常用的程序控制 ...
- 函数 —— strtok() 例如:Fred male 25,John male 62,Anna female 16两层循环
//char *strtok(char *str, const char *delim) /*功能: * 函数用来将字符串分割成一个个片段*/ /*参数: * str -- 要被分解成一组小字符串 ...
- Mybatis中mapper文件中的两层循环
导言 使用mapper.xml文件来存储和执行sql语句是Mybatis框架中重要的应用.在mapper.xml文件中对List数据的循环遍历较为普遍和常用,而两层或多层循环是大家不常用的.下面简单介 ...
- 都是❤️两层循环❤️的冒泡排序,选择排序,插入排序该怎么区分
目录 冒泡排序 选择排序 插入排序 这三个排序都有两层循环这是他们表面的特点,我把外部循环叫大循环,内部循环叫小循环,他们算法根本思想都有相同点,就是将待排序序列分为无序区间和有序区间,每过一次大循环 ...
- Java:关于跳出两层循环的方法以及Label(标签)
Java:关于跳出两层循环的方法以及Label(标签) HR曾问过我这样一个问题:Java中,如何跳出两层循环? 虽然当时没有说我的答案是错的,但也没完全认可.以下为对该问题的重新研究. 1. Lab ...
- python 跳出两层循环
if __name__ == '__main__':# 外循环是从0到4,内循环是从6到9,如果内循环的j大于7时,跳出两层循环.# 使用 for...else解决,如下for i in range( ...
- 【素数问题】整理几种计算素数的算法,包含:两层循环,开根号法,埃氏筛选法,欧拉筛选法
这篇文章主要介绍素数相关的算法问题,包含:两层循环判断,开根号法,埃氏筛选法,欧拉筛选法. 目录 一.什么是素数 二.素数计算几种方式 2.1.两层循环
- python 跳出两层循环,跳出多层循环
pip install goto-statement @with_goto def range(start, stop):i = startresult = []label .beginif i == ...
最新文章
- string来存放二进制数据
- python学习-练习题兔子生长问题巩固
- 爱立信与Ooredoo签署5G新框架协议
- Python的locals()函数
- JAVA 文件锁 FileLock
- Table accessed during One order advanced search
- 比navicat更好用的工具_5118是查什么的?做什么用的?对比站长工具和爱站谁更好?...
- C#通用类库--短信猫操作类1(原始AT命令)
- 再谈谈ADO.NET Data Service
- jquery选择器详解
- 类worksheet的paste方法无效_英雄档案——类人体
- 各种VC9 VC11版本的Apache
- macbook历代_历代MAC机型配置汇总
- 新手向python实现淘宝自动抢购
- 科研写作——常见句式(九)
- Spring Boot中的配置文件使用以及重新加载
- 转载一份大佬的面试指南,命中率很高
- 如何一招永久删除hao123流氓网页挟持
- 纯翻译 GMSL2-CSI2 MAX9295和MAX9296配对通用过程 编程指南
- 华为无线ap由fit升级到fat的方法