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

其他资讯