php+两个数据的交集 php两个数组合并成一个

php带索引检查计算数组的交集?array_intersect_assoc
(PHP 4 = 4.3.0, PHP 5, PHP 7)
array_intersect_assoc — 带索引检查计算数组的交集
说明
array_intersect_assoc ( array $array1 , array $array2 [, array $... ] ) : array
array_intersect_assoc() 返回一个数组 , 该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值 。注意和 array_intersect() 不同的是键名也用于比较 。
参数
array1
要检查的主值 。
array2
要比较的数组 。
...
要对比的数组变量的列表 。
返回值
返回数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值 。
范例
示例 #1 array_intersect_assoc() 例子
"green", "b" = "brown", "c" = "blue", "red");
$array2 = array("a" = "green", "b" = "yellow", "blue", "red");
$result_array = array_intersect_assoc($array1, $array2);
print_r($result_array);
?
PHP数组的几个操作,求并集,交集,差集,数组PHP数组的几个操作,求并集 , 交集 , 差集 , 数组与字符串的相互转换及数组去重
在php中如果我想要对两个数组进行如并集、交集和差集操作,我们可直接使用php自带的函数来操作如array_merge(),array_intersect(),array_diff().
计算数组的合并 array_merge与“ ”的区别
array_merge() 函数把两个或多个数组合并为一个数组 。
如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的),如果数组是数字索引的,则键名会以连续方式重新索引 。
注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引.代码如下:
$a = array(1 = 'a', 'b', 'c');
$b = array(1 = 'aa', 2, 'c');
$union = array_merge($a, $b);
$plus = $a$b;
print_r($union);
【php 两个数据的交集 php两个数组合并成一个】print_r($plus);
//结果依次为:
Array
{
[0]= a
[1]= b
[2]= c
[3]= aa
[4]= 2
[5]= c
}
Array
(
[1] = a
[2] = b
[3] = c
)
要合并的两个数组中有相同的字符串键的时候,使用array_merge()会覆盖掉原来的值,而使用“+”合并数组则会和用“ ”号合并数组相同数字键一样把最先出现的值作为最终结果返回,如下例:
$a2 = array('str' = 'a', 'b', 'c');
$b2 = array('str' = 'aa', 2, 'c');
$union2 = array_merge($a2, $b2);
$plus2 = $a2$b2;
print_r($union2);
print_r($plus2);
//结果依次为:
Array
(
[str] = aa
[0] = b
[1] = c
[2] = 2
[3] = c
)
Array
(
[str] = a
[0] = b
[1] = c
)
注:如果想用array_merge合并两个数组,返回结果可能还会有相同的元素,这时候可以用array_unique()把相同的元素去掉
计算数组的交集
array_intersect() 函数返回两个或多个数组的交集数组,结果数组包含了所有在被比较数组中 , 也同时出现在所有其他参数数组中的值,键名保留不变,注释:仅有值用于比较,代码如下:
$a = array('jpg','png','gif','bmp');
$b = array('JPG','txt','docx','bmp');
$intersection = array_intersect($a, $b);
还可以通过函数,获取自己想要的(比如元素不区分大小写),代码如下:
$intersection2 = array_intersect(array_map('strtolower',$a), array_map('strtolower',$b));
print_r($intersection);
print_r($intersection2);
//结果依次为:
Array
(
[3] = bmp
)
Array (
[0] = jpg
[3] = bmp
)
计算数组的差集,代码如下:
$old = array('jpg','png','gif','bmp');
$new = array('JPG','txt','docx','bmp');
$difference = array_diff($old, $new);
注:返回结果的元素包含$old的元素,不包括$new的元素
print_r($difference);
结果为:
Array
(
[0] = jpg
[1] = png
[2] = gif
)
也可以用函数先进行处理,再计算差集
array_diff() 函数返回两个数组的差集数组 。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值,在返回的数组中,键名保持不变 。
语法:array_diff(array1,array2,array3...)
代码如下:
$difference = array_diff(array_map('strtolower',$old),
array_map('strtolower',$new));
数组转换为字符串:
?php
$arr = array('Hello','World!','I','love','Shanghai!');
echo implode(" ",$arr);
?
字符串转换为数组:
?php
$str="1432532 ,4444";
$arr = explode(",",$str);
echo count($arr)."/br";
print_r($arr);
?
数组元素值去重
?php
$a=array("a"="red","b"="green","c"="red");
print_r(
array_unique($a)
);
?
针对有空格的字符串转换成无空格的字符串
?php
$str="1432532 ,67878";
$arr = explode(",",$str);
//echo count($arr)."/br";
$str_u='';
for($i=0;$icount($arr);$i)
{
$str_u .=trim($arr[$i]).',';
}
echo $str_u;
?
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)本文实例讲述了PHP编程计算两个时间段是否有交集php 两个数据的交集的实现方法 。分享给大家供大家参考,具体如下php 两个数据的交集:
优化前的版本:
/**
*
PHP计算两个时间段是否有交集(边界重叠不算)
*
*
@param
string
$beginTime1
开始时间1
*
@param
string
$endTime1
结束时间1
*
@param
string
$beginTime2
开始时间2
*
@param
string
$endTime2
结束时间2
*
@return
bool
*/
function
is_time_cross($beginTime1
=
'',
$endTime1
=
'',
$beginTime2
=
'',
$endTime2
=
'')
{
$status
=
$beginTime2
-
$beginTime1;
if
($status
0)
{
$status2
=
$beginTime2
-
$endTime1;
if
($status2
0)
{
return
false;
}
elseif
($status2
0)
{
return
true;
}
else
{
return
false;
}
}
elseif($status
0)
{
$status2
=
$endTime2
-
$beginTime1;
if
($status2
0)
{
return
true;
}
else
if
($status2
0)
{
return
false;
}
else
{
return
false;
}
}
else
{
$status2
=
$endTime2
-
$beginTime1;
if
($status2
==
0)
{
return
false;
}
else
{
return
true;
}
}
}
优化后的版本(条件合并):
/**
*
PHP计算两个时间段是否有交集(边界重叠不算)
*
*
@param
string
$beginTime1
开始时间1
*
@param
string
$endTime1
结束时间1
*
@param
string
$beginTime2
开始时间2
*
@param
string
$endTime2
结束时间2
*
@return
bool
*/
function
is_time_cross($beginTime1
=
'',
$endTime1
=
'',
$beginTime2
=
'',
$endTime2
=
'')
{
$status
=
$beginTime2
-
$beginTime1;
if
($status
0)
{
$status2
=
$beginTime2
-
$endTime1;
if
($status2
=
0)
{
return
false;
}
else
{
return
true;
}
}
else
{
$status2
=
$endTime2
-
$beginTime1;
if
($status2
0)
{
return
true;
}
else
{
return
false;
}
}
}
测试:
$beginTime1
=
strtotime('2015-08-07
06:30');
$endTime1
=
strtotime('2015-08-07
08:30');
$beginTime2
=
strtotime('2015-08-07
05:30');
$endTime2
=
strtotime('2015-08-07
06:31');
echo
is_time_cross($beginTime1,
$endTime1,
$beginTime2,
$endTime2);//输出1
PS:这里再为大家推荐几款时间及日期相关工具供大家参考使用:
在线日期/天数计算器:
在线日期计算器/相差天数计算器:
在线日期天数差计算器:
Unix时间戳(timestamp)转换工具:
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php日期与时间用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助 。
php 判断两个数组是否有交集在PHP中求数组的交集,我们可以与PHP给我们提供的现成函数:array_intersect(),其用法格式为:
array array_intersect(array array1,array array2[,arrayN…])
根据上述的语法格式,我们来写一个例子:
1?php
2$fruit1 = array("Apple","Banana","Orange");
3$fruit2 = array("Pear","Apple","Grape");
4$fruit3 = array("Watermelon","Orange","Apple");
5$intersection = array_intersect($fruit1, $fruit2, $fruit3);
6print_r($intersection);
7// 输出结果:
8// Array ( [0] = Apple )
9?
本例子将返回在$fruit1数组中出现且在$fruit2和$fruit3中也出现的所有水果的名子 。
使用array_intersect()函数时要注意:只有在两个元素相等且具有相同的数据类型时,array_intersect()函数才会认
为它们是相同的,否则不能进行交集计算 。array_intersect()函数返回一个保留了键的数组,只由第一个数组中出现的且在其它数组中都出现的
值组成 。
若要求关联数组的交集,请使用array_intersect_assoc()函数,给你个简单的例子:
1?php
2$fruit1 = array("red"="Apple","yellow"="Banana","orange"="Orange");
3$fruit2 = array("yellow"="Pear","red"="Apple","purple"="Grape");
4$fruit3 = array("green"="Watermelon","orange"="Orange","red"="Apple");
5$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);
6print_r($intersection);
7// 输出:
8// Array ( [red] = Apple )
9?
array_intersect_assoc()函数语法格式如下:
array array_intersect_assoc(array array1,array array2[,arrayN…])
array_intersect_assoc()与array_intersect()基本相同 , 只不过他在比较中还考虑了数组的键 。因此,只有在第一个数组中出现,且在所有其他输入数组中也出现的键/值对才返回到结果数组中 。
PHP除了array_intersect()还有什么方法可以比较两组数据是否存在交集没有这样的函数,不同编码比较没有实际意义,如果不能确定不编码,试探各种理解下进行比较,理论上会误判(完全不同的两个内容在某一方进行某种编码转换有是相同的)
PHP两个数组的交集?你这个搞得是不是太复杂了 。请使用array_diff比较数组,返回不同,再计算交集 。
关于php 两个数据的交集和php两个数组合并成一个的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读