搜索
首页后端开发php教程PHP将两个关联数组合并函数提高函数效率_php技巧

在foreach中循环查询数据代码量比较少,但是性能比较低,好点的解决办法是将id收集起来,用in一次性查询,但是这引发了数据结构不是我们用PHP自带的函数可以合并的,今天测试了一下:

使用下面的字节写的函数可以解决

从数据库中取出来的数据总是或多或少不符合我们心目中的数据结构,类似于下面的俩个数组,要形成SQL中类似于left join后两个数组合并:

复制代码 代码如下:

$test1 = Array(
0 => Array(
'id' => 9478137,
'create_time' => 1394760724
),
1 => Array(
'id' => 9478138,
'create_time' => 1394760725
),
2 => Array(
'id' => 9478138,
'create_time' => 1394760725
)
);
$test2 = array(
0 => array(
'id' => 9478137,
'message' => 'love you'
),
1 => array(
'id' => 9478138,
'message' => 'miss you'
)
);

如果要将这两个数组,类似于sql中的left join 关联起来我们用什么函数呢?额我没有找见就自己写了
刚开始的时候,用的是嵌套循环:效率低下
复制代码 代码如下:

function _mergerArray($array1, $array2, $field1, $field2 = '') {
$ret = array();
foreach($array1 as $key1 => $value1 ) {
foreach ($array2 as $key2 => $value2) {
if($value1[$field1] == $value2[$field2]) {
$ret[$key1] = array_merge($value1, $value2);
}
}
}
return $ret;
}

改进后的办法,使用数组下标,使用两次循环:形成类似于left join的方式
复制代码 代码如下:

$test1 = Array(
0 => Array(
'id' => 9478137,
'create_time' => 1394760724
),
1 => Array(
'id' => 9478138,
'create_time' => 1394760725
),
2 => Array(
'id' => 9478138,
'create_time' => 1394760725
)
);
$test2 = array(
0 => array(
'id' => 9478137,
'message' => 'love you'
),
1 => array(
'id' => 9478138,
'message' => 'miss you'
)
);

function _mergerArray($array1, $array2, $field1, $field2 = '') {
$ret = array();

//使用数组下标的办法
foreach ($array2 as $key => $value) {
$array3[$value[$field1]] = $value;
}
foreach ($array1 as $key => $value) {
$ret[] = array_merge($array3[$value[$field1]], $value);
}
return $ret;
}
$ret = _mergerArray($test1, $test2, 'id', 'id');
print_r($ret);exit;

打印出来结果如下:
复制代码 代码如下:

Array
(
[0] => Array
(
[id] => 9478137
[message] => love you
[create_time] => 1394760724
)
[1] => Array
(
[id] => 9478138
[message] => miss you
[create_time] => 1394760725
)
[2] => Array
(
[id] => 9478138
[message] => miss you
[create_time] => 1394760725
)
)

相当于left join了吧?
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
php中关联数组和索引数组区别是什么php中关联数组和索引数组区别是什么Jul 13, 2023 pm 03:11 PM

php中关联数组和索引数组区别有:1、索引数组使用数字索引,而关联数组使用字符串键来标识和访问元素;2、索引数组中的元素顺序与被添加到数组中的顺序相同,而关联数组中的元素顺序不重;3、索引数组可以通过从0开始的数字索引访问数组元素,而关联数组可以使用字符串键来访问数组元素;4、索引数组的元素键是从数字0开始的数字索引,关联数组的元素键是字符串。

php关联数组怎么求和php关联数组怎么求和Jul 14, 2023 am 11:41 AM

php关联数组求和的方法:1、使用foreach循环;2、使用array_sum()函数;3、使用array_reduce()函数。

深入探讨PHP数组:多维数组、关联数组等全面解析深入探讨PHP数组:多维数组、关联数组等全面解析Mar 13, 2024 pm 02:36 PM

深入探讨PHP数组:多维数组、关联数组等全面解析PHP中数组是一种非常重要的数据结构,它可以存储多个数据项并通过索引进行访问。在PHP中,数组可以分为索引数组、关联数组和多维数组等不同类型,每种类型都有其独特的用途和特点。本文将深入探讨PHP数组的各种类型,包括如何声明、访问、遍历和操作数组,同时将会提供具体的代码示例以帮助读者更好地理解。一、索引数组索引数

php关联数组是什么意思php关联数组是什么意思Aug 03, 2023 pm 05:46 PM

php关联数组是一种特殊类型的数组,其中每个元素都是由一个键和一个相应的值组成的,与普通数组不同的是,关联数组的索引不是按照数字顺序排列的,而是使用字符串或整数等键来标识和访问值。关联数组在php中被广泛应用于各种编程任务,包括数据存储、表单处理、数据库查询等。

使用PHP函数 "mysqli_fetch_assoc" 从结果集中获取一行作为关联数组使用PHP函数 "mysqli_fetch_assoc" 从结果集中获取一行作为关联数组Jul 24, 2023 pm 08:12 PM

使用PHP函数"mysqli_fetch_assoc"从结果集中获取一行作为关联数组在PHP中,与数据库进行交互是一项常见的任务。当我们执行SELECT查询并获取结果集时,我们通常需要将结果集中的数据存储到PHP数组中以便进一步处理。PHP提供了多个函数来处理结果集,其中一个常用的函数是"mysqli_fetch_assoc"。这个函数从结果集中获取一行

如何使用PHP中的array_diff_assoc函数比较关联数组的差异如何使用PHP中的array_diff_assoc函数比较关联数组的差异Jun 26, 2023 am 11:44 AM

随着技术的不断发展,Web开发变得越来越流行,PHP作为其中一种广泛使用的Web开发语言,在处理数据的过程中,很多时候需要比较两个数组之间的差异,这时我们可以使用PHP中的array_diff_assoc函数来实现。array_diff_assoc函数用于比较两个关联数组之间的差异,根据键值对的不同返回一个新的数组,它返回一个数组,其中包含在所有参数数组中都

PHP arsort()函数使用指南:关联数组降序排列PHP arsort()函数使用指南:关联数组降序排列Jun 27, 2023 am 09:28 AM

在PHP编程中,数组是一种非常常见的数据类型。PHP提供了许多内置的函数来处理数组,其中arsort()函数是一个非常有用的函数,可以用来对关联数组进行降序排列。本文将对arsort()函数进行详细介绍并给出一些实用的例子。一、什么是arsort()函数?arsort()函数是一个PHP内置的数组排序函数,用于按关联数组的值对数组进行降序排序。该函数不会改变

PHP关联数组的使用方法和示例PHP关联数组的使用方法和示例Jul 15, 2023 pm 09:37 PM

PHP关联数组的使用方法和示例在PHP中,数组是一种非常常用的数据类型,它用于存储多个值,并可以通过索引或键进行访问。在许多情况下,使用关联数组比使用索引数组更为方便,因为关联数组可以使用自定义的键来访问和操作数组中的值。关联数组是一种将键和值相关联的数组类型。每个键值对在数组中都有唯一的键,通过键可以访问和修改对应的值。下面是一些使用关联数组的基本方法和示

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),