php数组合并 php数组key相同合并
今天给各位分享php数组合并的知识,其中也会对php数组key相同合并进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
php合并一个或多个数组
array_merge
(PHP 4, PHP 5, PHP 7)
array_merge
—合并一个或多个数组
说明
array_merge([array$...]):
array
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果输入的数组存在以数字作为索引的内容,则这项内容的键名会以连续方式重新索引。
php 两个普通数组合并为一个普通数组
php两个普通数组合并为一个普通数组可以参考下面的代码:
<?php
$a=array(1,2,3,4,5);
$b=array(6,7,8,9,10);
$c=array_merge($a,$b);
print_r($c);
?>
注:当被合并的数组中有一个数组为空时,可能会出现合并后的数组也为空。
扩展资料:
PHP常用函数
printf()函数输出格式化的字符串。
print()函数输出一个或多个字符串。
parse_str()函数把查询字符串解析到变量中。
ord()函数返回字符串第一个字符的 ASCII值。
number_format()函数通过千位分组来格式化数字。
nl2br()函数在字符串中的每个新行(
)之前插入 HTML换行符(<br/>)。
nl_langinfo()函数返回指定的本地信息。
参考资料来源:百度百科-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了吧?
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!