有数据段:
A: 101-105
B: 121-127
C: 127-130
这个时候希望能找出数据段中有没有重复的数据!如:101-120(101,102,103,104,105)
121-127(121,122,123,124,125,126,127)
127-130(127.128.129.130)这个时候B与C就有重复的数据127,就要提醒数据段中有重复的数据要怎么判断!
A: 101-105
B: 121-127
C: 127-130
这个时候希望能找出数据段中有没有重复的数据!如:101-120(101,102,103,104,105)
121-127(121,122,123,124,125,126,127)
127-130(127.128.129.130)这个时候B与C就有重复的数据127,就要提醒数据段中有重复的数据要怎么判断!
'A' => '101-105',
'C' => '127-130',
'B' => '121-127',
);
/*** 确保按升序排列 ***/
asort($ar);/*** 将数据展开的回调函数 ***/
function foo($v) {
$t = split('-', $v);
return range($t[0], $t[1]);
}/*** 展开数据 ***/
$ar = array_map('foo', $ar);$old = array();
$key = '';
foreach($ar as $k=>$new) {
if($key) {
if(array_intersect($old, $new))
echo "$key $k 有重复<br />";
}
$old = $new;
$key = $k;
}
只要比较前一个范围的上界是否>=后一个范围的下界就可以了,
不必用range展开成数组比较了
if(count($result)!=count($yourarray))
echo "有重复";
$t =explode('-', $v);
$arr=range($t[0], $t[1]);
if(count($arr)>10)//数组元素个数超过10个就给出信息并退出!否则返回该数组
exit('数组超过了规定的长度');
else
return $arr;
}