【php】合并多个数组并去掉相同的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【php】合并多个数组并去掉相同的相关的知识,希望对你有一定的参考价值。

Array ( [0] => 1 [1] => 2 )
Array ( [0] => 9 )
Array ( [0] => 11 )
Array ( [0] => 11 [1] => 18 )
Array ( [0] => 2 )
Array ( [0] => 2 )

这是for循环出来的,

<?for($i=0;$i<$num;$i++)$tpid=$data[$i]['busitype'];$tpid=explode(".",$tpid,-1);print_r($tpid);echo "<br>";?>

问题是:
我想把循环出来的这几个数组合并,并去掉相同的值,谢谢啊。。。

我知道可以用array_merge()来合并,也知道用array_unique()去除重复值,但数组是for循环出来的,所以就不知道怎么用array_merge这个函数,参数不知道怎么去写,我的想法是:在for循环里把每个数组都从新装进一个新数组,然后在for循环外就可以当array_merge的参数,但是又不知道参数的数量,怎么写啊????

小弟刚学,数组老是搞不好,谢谢了大哥大姐。。。
你是要把$tpid数组的内容合并吗?
是的!!!

最后的结果应是只有1,2,9,11,18

你说的还不行,打印出$result是Array ( [0] => 2 )

我在csdn上找到答案了,就是你的思路,只是我没有领会好,呵呵,谢谢你。。。
http://topic.csdn.net/u/20080513/11/ea79e380-3e4f-43c9-90d6-5e89d174741d.html?955687637

你是要把$tpid数组的内容合并吗,可以先弄了一个空数组,for里面归并到这个空数组,for结束之后进行唯一处理,大致逻辑如下:

<?php
$result=Array();
for($i=0;$i<$num;$i++)
$tpid=$data[$i][\'busitype\'];
$tpid=explode(".",$tpid,-1);
print_r($tpid);
echo "<br>";
$result=array_merge($result,$tpid);

$result=array_unique($result);
?>

补充:

那是array_merge的问题,重复的下标会被合并,你试试看使用array_merge_recursive吧,我无法测试程序,没有你的数据。
参考技术A 你是要把$tpid数组的内容合并吗,可以先弄了一个空数组,for里面归并到这个空数组,for结束之后进行唯一处理,大致逻辑如下:
<?php
$result=Array();
for($i=0;$i<$num;$i++)
$tpid=$data[$i]['busitype'];
$tpid=explode(".",$tpid,-1);
print_r($tpid);
echo
"<br>";
$result=array_merge($result,$tpid);

$result=array_unique($result);
?>
补充:
那是array_merge的问题,重复的下标会被合并,你试试看使用array_merge_recursive吧,我无法测试程序,没有你的数据。

php下将多个数组合并成一个数组的方法与实例代码

参考技术A 1.合并数组
array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为:
复制代码
代码如下:
array
array_merge
(array
array1
array2…,arrayN)
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
实例如下:
复制代码
代码如下:
$face
=
array("J","Q","K","A");
$numbered
=
array("2","3","4","5","6","7","8","9");
$cards
=
array_merge($face,
$numbered);
shuffle($cards);
print_r($cards);
这将返回如下所示的结果,运行代码:
复制代码
代码如下:
Array
(
[0]
=>
A
[1]
=>
4
[2]
=>
9
[3]
=>
3
[4]
=>
K
[5]
=>
7
[6]
=>
5
[7]
=>
Q
[8]
=>
6
[9]
=>
8
[10]
=>
2
[11]
=>
J
)
2.递归追加数组
array_merge_recursive()函数与array_merge()相同,可以将两个或多个数组合并在一起,形成一个联合的数组.两者之间的区别在于,当某个输入数组中的某个键己经存在于结果数组中时该函数会采取不同的处理方式.array_merge()会覆盖前面存在的键/值对,替换为当前输入数组中的键/值对,而array_merge_recursive()将把两个值合并在一起,形成一个新的数组,并以原有的键作为数组名。还有一个数组合并的形式,就是递归追加数组。其形式为:
view
sourceprint?array
array_merge_recursive(
array
key,array
values
)
示例如下:
复制代码
代码如下:
$class1
=
array("John"
=>
100,
"James"
=>
85);
$class2
=
array("Micky"
=>
78,
"John"
=>
45);
$classScores
=
array_merge_recursive($class1,
$class2);
print_r($classScores);
这将返回如下结果:
view
sourceprint?Array
(
[John]
=>
Array
(
[0]
=>
100
[1]
=>
45
)
[James]
=>
85
[Micky]
=>
78
)
3.连接两个数组
array_combine()函数会得到一个新数组,它由一组提交的键和对应的值组成。其形式为:
view
sourceprint?array
array_merge(array
array1,array
array2[…,array
arrayN])
注意,两个输入数组必须大小相同,不能为空。示例如下:
复制代码
代码如下:
$abbreviations
=
array("AL","AK","AZ","AR");
$states
=
array("Alabama","Alaska","Arizona","Arkansas");
$stateMap
=
array_combine($abbreviations,$states);
print_r($stateMap);
这会返回:
复制代码
代码如下:
Array
(
[AL]
=>
Alabama
[AK]
=>
Alaska
[AZ]
=>
Arizona
[AR]
=>
Arkansas
)

以上是关于【php】合并多个数组并去掉相同的的主要内容,如果未能解决你的问题,请参考以下文章

如何制作导航抽屉以关闭具有选定项目的组并根据URL打开组

合并两个数组,并且把相同的数值覆盖掉

PHP合并某个字段相同的数组,并重组数据算法

PHP合并数组的三种方法的分析与比较

java 怎么把多个list 合并成一个去掉重复的

php当中,如何将数组合并成变量呢?