php数据合并怎么用 PHP合并数组
PHP如何把两个数组结果合并在一起
首先你的思路是正确的,这点可以肯定,合并数组可以使用array_merge() 这个函数,
西塞山网站建设公司成都创新互联公司,西塞山网站设计制作,有大型网站制作公司丰富经验。已为西塞山超过千家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的西塞山做网站的公司定做!
array_merge() 函数把两个或多个数组合并为一个数组。
如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。
thinkphp中两条数据有相同的内容,如何将他们合并成一条数据
1. 在用mysql查询的时候,用group by (某一个字段) 将其查询结果合并;
或者;
2. 查询条件用limit 1 限制查询结果条数,反正内容一样,你就要一条即可;
如何用Php把这两个数组合并呢?
我不是很清楚你是要怎么合并,但是我推测是第二种效果
第一种效果:
?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 两个数组怎么合并成一个
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 );
?
分享标题:php数据合并怎么用 PHP合并数组
网站网址:http://cdiso.cn/article/hjdsci.html