㈠ php 数组合并
$a1=array('num1'=>1,'num2'=>2,'num3'=>3);
$a2=array('num11'=>212,'num5'=>5,'num3'=>3);
$a3=array_merge_recursive($a1,$a2);//合并两个数组
functionarr_sum(&$value,$key){//回调函数,实现元素相加
if(is_array($value))$value=array_sum($value);
}
array_walk($a3,'arr_sum');//遍历数组
㈡ php两个相关的多维数组怎么合并成一个数组
如果是两个数组是相对应的,可以使用以下方法:
<?php
//数组1(gc_class):
$gc_class=array(
0=>array('gc_id'=>1,'gc_name'=>'分类1','gc_title'=>'111111'),
1=>array('gc_id'=>2,'gc_name'=>'分类2','gc_title'=>'2222')
);
//数组2(acticity):
$acticity=array(
'0'=>array('activity_id'=>1,'gc_class'=>1,'activity_name'=>'分类1下面的活动'),
'1'=>array('activity_id'=>2,'gc_class'=>2,'activity_name'=>'分类2下面的活动')
);
$arrs=array();
foreach($gc_classas$key=>$_gc_class){
$arrs[$key]=array_merge($_gc_class,$acticity[$key]);
}
print_r($arrs);
exit;
㈢ PHP如何把两个数组结果合并在一起
首先你的思路是正确的,这点可以肯定,合并数组可以使用array_merge() 这个函数,
array_merge() 函数把两个或多个数组合并为一个数组。
如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。
㈣ 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了吧?
㈤ 如何用Php把这两个数组合并呢
array_merge()
㈥ php 两个数组怎么合并成一个
arrayarray_merge(array$array1[,array$...])
array_merge() 将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
如果你想完全保留原有数组并只想新的数组附加到后面,用 + 运算符:
<?php
$array1=array(0=>'zero_a',2=>'two_a',3=>'three_a');
$array2=array(1=>'one_b',3=>'three_b',4=>'four_b');
$result=$array1+$array2;
var_mp($result);
?>
㈦ php合并两个数组报错如何解决
/*foreach($arr as $key => &$value) {
$value['shop_name']='';
}
unset( $value );
*/
foreach($arr as $k2 =>&$v2) {
$v2['shop_name']='';
foreach($arr2 as $k =>$v) {
if($v2['id'] == $v['id']) {
$v2['shop_name'] = $v['shop_name'];
}
}
}
print_r($arr)
㈧ 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);
?>
注:当被合并的数组中有一个数组为空时,可能会出现合并后的数组也为空。
(8)php合并2个数组扩展阅读:
PHP常用函数
printf()函数输出格式化的字符串。
print()函数输出一个或多个字符串。
parse_str()函数把查询字符串解析到变量中。
ord() 函数返回字符串第一个字符的 ASCII 值。
number_format()函数通过千位分组来格式化数字。
nl2br()函数在字符串中的每个新行 ( ) 之前插入 HTML 换行符 (<br />)。
nl_langinfo()函数返回指定的本地信息。
㈨ php数组合并 要保持两个数组的键名都不变
键名如果都是唯一的.. 写个循环来组一个新的数组就可以了:
$a = array("a" => "avalue", "b" => "bvalue");
$b = array("c" => "cvalue", "d" => "dvalue");
$c = array();
foreach( $a as $key=> $value ) {
$c[$key] = $value;
}
foreach( $b as $key=> $value ) {
$c[$key] = $value;
}
㈩ php 两个数组合并,并重新命名键名
按我理解,你要的效果应该是这样吧:
array(30) {
[0] => array(2) {
['time'] => string(10) "2019-09-21"
['xq'] => string(10) "2019-09-22"
}
[1] => array(2) {
['time'] => string(10) "2019-09-21"
['xq'] => string(10) "2019-09-22"
}
......
[29] => array(2) {
['time'] => string(10) "2019-10-20"
['xq'] => string(10) "2019-09-22"
}
}
如果是这样,那就这样实现:
$arr=原数组;
$arr1=array_map(function($v1,$v2){
return array("time"=>$v1,"xq"=>$v2);
},$arr["time"],$arr["xq"]);
print_r($arr1);