php合并多个数组
① php 多个数组合并 重新生成新的数组并按要求值相加
$aa='[{"id": 0, "num": "2", "name": "产品1", "price": "37", "amount": 74, "zdamount": 100}, {"id": 1, "num": "2", "name": "产品2", "price": "37", "amount": 74, "zdamount": 100}]';
$bb='[{"id": 0, "num": "3", "name": "产品1", "price": "37", "amount": 90, "zdamount": 110}, {"id": 1, "num": "5", "name": "产品2", "price": "37", "amount": 150, "zdamount": 180}]';
$cc='[{"id": 2, "num": "3", "name": "产品3", "price": "37", "amount": 90, "zdamount": 110}, {"id": 1, "num": "5", "name": "产品2", "price": "37", "amount": 150, "zdamount": 180}]';
$j_a = json_decode($aa,1);
$j_b = json_decode($bb,1);
$j_c = json_decode($cc,1);
$arr_list = [$j_a,$j_b,$j_c];//把数组扔进大数组,这样可以随意增加个数
$result = [];
foreach ($arr_list as $k=>$v) {//第一次循环,把原数组取出
foreach ($v as $key => $value) {//第二次循环,正式取出数据
if (isset($result[$value['id']])) {//如果有此id,则进行累加操作
$result[$value['id']]['num'] += $value['num'];
$result[$value['id']]['amount'] += $value['amount'];
$result[$value['id']]['zdamount'] += $value['zdamount'];
} else {//没有此id则进行赋值操作
$result[$value['id']]['id'] = $value['id'];
$result[$value['id']]['price'] = $value['price'];
$result[$value['id']]['name'] = $value['name'];
$result[$value['id']]['num'] = $value['num'];
$result[$value['id']]['amount'] = $value['amount'];
$result[$value['id']]['zdamount'] = $value['zdamount'];
}
}
}
echo json_encode($result,320);//输出结果,如果需要序列化键值,可以使用array_values($result)
② php里面如何合并数组
可以使用函数array_merge();
③ PHP数组合并
$arr=[array('no'=> 100103320096),array('no' => 100100170006)];
$arr1=array();//定义新数组
foreach($arr as $k=>$v){//用foeach循环获取数组的各个值,赋值给新数组
$arr1[]=$v['no'];
};
print($arr1);//输出的是你要的新数组
④ PHP数组合并
用array_merge()进行合并,得到的结果是:
Array ( [0] => [1] => [2] => Array ( [0] => test2 [1] => test3 ) ) ,下面的php文档对这个函数的说明,将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
如果你一定要得到跟你的要求一模一样的结果,我想只能是自己重新写一个函数了!
⑤ php合并一个或多个数组
array_merge
(PHP 4, PHP 5, PHP 7)
array_merge — 合并一个或多个数组
1.说明
array_merge ([ array $... ] ) : array
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将 不会 覆盖原来的值,而是附加到后面。
如果输入的数组存在以数字作为索引的内容,则这项内容的键名会以连续方式重新索引。
2.参数
...
要合并的数组。
返回值
返回合并后的结果数组。如果参数为空,则返回空 array。
更新日志
版本 说明
7.4.0 允许不带参数调用,之前版本至少需要一个参数。
3.范例
示例 #1 array_merge() 示例
"red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>
⑥ php 多个数组合并
$array1=array(
0=>array("time"=>"2017-04"),
1=>array("time"=>"2017-05"),
2=>array("time"=>"2017-06")
);
$array2=array(
0=>array("amount"=>"38970.00"),
1=>array("amount"=>"75030.00")
);
$array3=array(
0=>array("count"=>"9"),
1=>array("count"=>"83")
);
$array4=array();
foreach($array1AS$key=>$value)
{
//$array4[$key]=array_merge($value,$array2[$key],$array3[$key]);
$array4[$key]=$value;
$array4[$key]+=$array2[$key]?$array2[$key]:array();
$array4[$key]+=$array3[$key]?$array3[$key]:array();
}
var_mp($array4);
⑦ 请教php数组如何合并
我给个写法,,其实写法很多自己再慢慢琢磨下
<?php
$a=array
(
0=>array
(
'id'=>1,
'love'=>'苹果'
),
1=>array
(
'id'=>1,
'love'=>'西瓜'
),
2=>array
(
'id'=>2,
'hobby'=>'桃子'
),
3=>array
(
'id'=>2,
'hobby'=>'梨子'
),
4=>array
(
'id'=>2,
'hobby'=>'葡萄'
),
5=>array
(
'id'=>3,
'hobby'=>'香蕉'
)
);
$b=array();//最后结果存放的数组
$b[0]['id']=$a[0]['id'];//初始化数组
$b[0]['love']=array(isset($a[0]['love'])?$a[0]['love']:$a[0]['hobby']);//初始化数组
$temp=0;//初始化下标
for($i=1;$i<count($a);$i++)
{
$flag=0;//数组是否新增一个变量/还是合并
foreach($bas$k=>$item)
{
if($a[$i]['id']==$item['id'])
{
$b[$k]['love'][]=isset($a[$i]['love'])?$a[$i]['love']:$a[$i]['hobby'];
$flag=1;//合并;
break;
}
}
if($flag==0)//新增
{
$temp+=1;
$b[$temp]['id']=$a[$i]['id'];
$b[$temp]['love']=array(isset($a[$i]['love'])?$a[$i]['love']:$a[$i]['hobby']);
}
}
var_mp($b);
?>
⑧ PHP 数组合并
你这不就是把两个一维数组放到二维数组里面去吗?
把两个一维数组外面再套一层[]后去array_merge。
举个例子:
$arr1=['id'=>1,'value'=>'a'];
$arr2=['id'=>2,'value'=>'b'];
$arr3=['id'=>3,'value'=>'c'];
$result=[];//结果变量
for($i=1;$i<=3;$i++){
$result=array_merge($result,[${'arr'.$i}]);
}
$result就是合并后的二维数组