标签:
在PHP中提供了强大的数组功能,对于数组的合并也提供了两个方法:array_merge 和 array_merge_recursive
$ar1 = array("color" => array("favorite" => "red","name"=>"test"));
$ar2 = array("color" => array("favorite" => "green","code"=>"code"));
print_r (array_merge ($ar1, $ar2));
print_r(array_merge_recursive ($ar1, $ar2));
/**
* @Author: -HTL
* @Email: Huangyuan413026@163.com
* @DateTime: 2016-04-21 12:01:51
* @Description: 根据指定的健名将$ar2中的所有健值复制到$ar1对应的健值中
* @Return:$ar1
*/
function array_more_merge($ar1,$ar2,$key_name){
if(
!$ar1
|| !is_array($ar1)
|| count($ar1)<=0
|| !$ar2
|| !is_array($ar2)
|| count($ar2)<=0
|| !$key_name
|| strlen($key_name)<=0)
{
return $ar1;
}
- //不能使用for进行循环,因为如果数组中的索引不是连续的则使用for可能无法正确的完成循环
- //如 $a =
- Array(
- 1 => Array("id" => 1 ) ,8 => Array("id" => 2 ) ,4 => Array("id" => 4 ) );
- //该数组数为3所以只能找到[1],而[8][4]在循环中不会进行处理,因为$i <=count($a)不成立
- for ($i=0; $i <=count($a) ; $i++) { print_r($a[$i]); }
foreach ($ar1 as $i=>$items) {
foreach ($ar2 as $key=>$item) {
if($ar2[$key][$key_name]==$ar1[$i][$key_name]){
$keys = array_keys($ar2[$key]);
foreach ($keys as $name) {
$ar1[$i][$name] = $ar2[$key][$name];
}
}
}
}
return $ar1;
}
$ar1 = ‘{"1":{"cost":"1","id":"1","total_price":"5"},"2":{"cost":"2","id":"2","total_price":"10"},"4":{"cost":"4","id":"4","total_price":"20"}}‘;
$ar1 = json_decode($ar1,true);
$ar2 = ‘{"1":{"cost":"1","id":"1","total_price":"5"},"2":{"cost":"20","id":"2","total_price":"100"},"4":{"cost":"40","id":"4","total_price":"200"}}‘;
$ar2 = json_decode($ar2,true);
echo "array_merge_recursive:";
print_r(array_merge_recursive($ar1,$ar2));
echo "array_merge:";
print_r(array_merge($ar1,$ar2));
echo "array_more_merge:";
print_r($this->array_more_merge($ar1,$ar2,"id"));
die();
标签:
原文地址:http://www.cnblogs.com/huangtailang/p/2ef12ad90f47280ce27c433ec2b2ab49.html