日期:2014-05-17  浏览次数:20473 次

请问如何有效判断几组数据范围是否有交集
5000~7000
2000~6000
8000~9000
4000~8500
5000~7000
请问php中这几组随机的数据怎么样更有效的判断是否有重复?

期望值是
2000~4000
4000~5000
5000~6000
6000~7000
7000~8500
8500~9000

php

------解决方案--------------------
只需要判别是否包含,可以写成函数
还是沿袭开始的思路
$a = array(
  array(5000, 7000),
  array(2000, 6000),
  array(8000, 9000),
  array(4000, 8500),
  array(5000, 7000),
);
var_dump(foo($a)); //bool(false)

$a = array(
  array(5000, 7000),
  array(6000, 8200),
  array(8000, 9000)
);
var_dump(foo($a)); //bool(false)

$a = array(
  array(5000, 5500),
  array(6000, 6500),
  array(8000, 8500)
);
var_dump(foo($a)); //bool(true)

function foo($a) {
  $r = array_unique(call_user_func_array('array_merge', $a));
  sort($r);

  foreach($a as $v) {
    if(array_search($v[0], $r) != array_search($v[1], $r) - 1) return false;
  }
  return true;
}