首先你的思路是正确的,这点可以肯定,合并数组可以使用array_merge() 这个函数,
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站建设、新乡县网络推广、重庆小程序开发公司、新乡县网络营销、新乡县企业策划、新乡县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供新乡县建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
array_merge() 函数把两个或多个数组合并为一个数组。
如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。
我不是很清楚你是要怎么合并,但是我推测是第二种效果
第一种效果:
?php
$a = Array (
"28150000" = Array (
0 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = '81753'
),
'1' = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = 81757
)
)
,
"28160000" = Array (
0 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = 81759
),
1 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = 81754
)
)
);
$b = Array (
"28150000" = Array (
1 = Array (
'old_keywordid' = 11933,
'old_keyword' = '鲜花'
)
),
"28160000" = Array (
0 = Array (
'old_keywordid' = 12478,
'old_keyword' = '鲜花'
)
)
)
;
// var_dump($a);
var_dump(array_replace_recursive($a,$b));
运行的结果:
array (size=2)
28150000 =
array (size=2)
0 =
array (size=3)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = string '81753' (length=5)
1 =
array (size=5)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = int 81757
'old_keywordid' = int 11933
'old_keyword' = string '鲜花' (length=6)
28160000 =
array (size=2)
0 =
array (size=5)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = int 81759
'old_keywordid' = int 12478
'old_keyword' = string '鲜花' (length=6)
1 =
array (size=3)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = int 81754
第二 种效果
由于你的key是数字,即使是用字符串表示,在php的数组中也是数字,因此不能够使用array_merge_recursive,真是麻烦,如果你是一维的,我可以写一个函数,但是如果是多维的,就没有办法了
?php
$a = Array (
"28150000" = Array (
0 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = '81753'
),
1 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = 81757
)
)
,
"28160000" = Array (
0 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = 81759
),
1 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = 81754
)
)
);
$b = Array (
"28150000" = Array (
1 = Array (
'old_keywordid' = 11933,
'old_keyword' = '鲜花'
)
),
"28160000" = Array (
0 = Array (
'old_keywordid' = 12478,
'old_keyword' = '鲜花'
)
)
)
;
function array_merge_number($array1,$array2){
foreach($array1 as $key=$val){
if($array2[$key]){
$val = array_merge($array2[$key],$val);
}
}
return $array1;
}
var_dump(array_merge_number($a, $b));
运行结果:
array (size=2)
28150000 =
array (size=3)
0 =
array (size=2)
'old_keywordid' = int 11933
'old_keyword' = string '鲜花' (length=6)
1 =
array (size=3)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = string '81753' (length=5)
2 =
array (size=3)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = int 81757
28160000 =
array (size=3)
0 =
array (size=2)
'old_keywordid' = int 12478
'old_keyword' = string '鲜花' (length=6)
1 =
array (size=3)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = int 81759
2 =
array (size=3)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = int 81754
我很想写一个能够深度合并的函数,但是怎么考虑都不合适,28160000是key值,并且是数字性的,记住array中key值只能是数字和字符串,28160000即使你写成'28160000'也只会当成数字,你里面的2 1 0也都是数字,很明显,你不想要28160000被当成数字,但是你想要0 1 2被当成数字,这就很难办了,如果你可以把28160000改成不能解析称数字的字符串,那么请用array_merge_recursive,这个已经足够满足你的需求了:
?php
$a = Array (
"2815-0000" = Array (
0 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = '81753'
),
1 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = 81757
)
)
,
"2816-0000" = Array (
0 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = 81759
),
1 = Array (
'keywordid' = 3653,
'keyword' = '鲜花',
'orders_id' = 81754
)
)
);
$b = Array (
"2815-0000" = Array (
1 = Array (
'keywordid' = 11933,
'old_keyword' = '鲜花'
)
),
"2816-0000" = Array (
0 = Array (
'old_keywordid' = 12478,
'old_keyword' = '鲜花'
)
)
)
;
var_dump(array_merge_recursive($a, $b));
运行结果:
array (size=2)
'2815-0000' =
array (size=3)
0 =
array (size=3)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = string '81753' (length=5)
1 =
array (size=3)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = int 81757
2 =
array (size=2)
'keywordid' = int 11933
'old_keyword' = string '鲜花' (length=6)
'2816-0000' =
array (size=3)
0 =
array (size=3)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = int 81759
1 =
array (size=3)
'keywordid' = int 3653
'keyword' = string '鲜花' (length=6)
'orders_id' = int 81754
2 =
array (size=2)
'old_keywordid' = int 12478
'old_keyword' = string '鲜花' (length=6)
如果你不能的话,那么就使用我写的那个函数
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()函数在字符串中的每个新行 (\n) 之前插入 HTML 换行符 (br /)。
nl_langinfo()函数返回指定的本地信息。
参考资料来源:百度百科-PHP (超文本预处理器)
$arr1 = array(1,1,2,2,6);
$arr2 = array(4,6,1,7,3);
$result = array();
foreach($arr1 as $k = $v){
if (!array_key_exists($v,$result)) $result[$v] = array();
array_push($result[$v], $arr2[$k]);
}
array array_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_dump ( $result );
?
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款