论php数组合并
Posted 程序猿的猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论php数组合并相关的知识,希望对你有一定的参考价值。
注:尽量不要在循环中操作数据库。
array_merge():一个神奇的方法
1.两个一维数组合并成一个一维数组
$a = array(\'morning\',\'afternoon\',\'night\');
$b = array(\'breakfast\',\'lunch\',\'dinner\');
(1)以$a中的数组元素为键名,以$b中的数组元素为键值而形成的一个新数组。
$c = array_combine($a,$b);
(2)将$a中与$b中键值相同的数组元素剔除,仅保留$a中不同的数组元素。也就是说返回差集。
$c=array_diff($a,$b);
(3)将$a中与$b中键名和键值同时相同的数组元素剔除,仅保留$a中不同的数组元素,也就是说返回差集数组。
$a = array(\'morning\',\'afternoon\',\'night\');
$b = array(\'breakfast\',\'lunch\',\'night\');
$c=array_diff_assoc($a,$b);
print_r($c);
输出结果为:
(4)将$a中与$b中键名相同的数组元素剔除,仅保留$a中不同的数组元素,也就是说返回差集数组。
$c=array_diff_key($a,$b);
空数组。
(5)将$a中与$b中键名和键值同时相同的数组元素剔除,仅保留$a中不同的数组元素,也就是说返回差集数组,然后使用用户自定义函数比较此差集数组中的键名,对数组重新排序。
(6)将$a中与$b中键名相同的数组元素剔除,仅保留$a中不同的数组元素,也就是说返回差集数组,然后使用用户自定义函数比较此差集数组中的键名,对数组重新排序。
$a = array(\'morning\',\'afternoon\',\'night\',\'today\',\'yesterday\',\'tomorrow\');
$b = array(\'breakfast\',\'lunch\',\'night\');
$c=array_diff_ukey($a,$b,function($a,$b){
if($a==$b)
return 0;
return ($a>$b)?-1:1;
});
print_r($c);
(7)将$a中与$b中键值相同的数组元素返回,键名为$a中对应的数组键名。(或者是更多数组,返回的是共有的交集)
$a = array(\'morning\',\'afternoon\',\'today\',\'night\',\'yesterday\',\'tomorrow\');
$b = array(\'breakfast\',\'lunch\',\'night\');
$c = array_intersect($a,$b);
print_r($c);
(8)将一个或多个数组合并为一个数组。
1.如果两个或多个数组元素有相同的键名,则最后的元素会覆盖其他元素。如果输入的数组键名是整数,则该函数将返回带有整数键名的新数组,其键名以0开始进行重新索引。
$a = array(\'sun\'=>\'阳光\',\'moon\'=>\'月光\');
$b = array(\'dog\'=>\'狗狗\',\'cat\'=>\'小猫\');
$c = array_merge($a,$b);
print_r($c);
$a = array(\'sun\'=>\'阳光\',\'moon\'=>\'月光\',\'守望\'=>\'麦田\');
$b = array(\'dog\'=>\'狗狗\',\'cat\'=>\'小猫\',\'守望\'=>\'先锋\');
$c = array_merge($a,$b);
print_r($c);
2.array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。
$a = array(\'sun\'=>\'阳光\',\'moon\'=>\'月光\',\'守望\'=>\'麦田\');
$b = array(\'dog\'=>\'狗狗\',\'cat\'=>\'小猫\',\'守望\'=>\'先锋\');
$c = array_merge_recursive($a,$b);
print_r($c);
以上是关于论php数组合并的主要内容,如果未能解决你的问题,请参考以下文章