有数据段:
 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,就要提醒数据段中有重复的数据要怎么判断!

解决方案 »

  1.   

    if (count (array_intersect($b,$c))>0)...
      

  2.   

        重复值就是用交集(array_intersect)来获取,不同值就是差集(array_diff),PHP在这方面处理能力还是很强的!换成ASP来处理那就复杂多了!
      

  3.   

    $ar = array(
     '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;
    }
      

  4.   

    排序后,
    只要比较前一个范围的上界是否>=后一个范围的下界就可以了,
    不必用range展开成数组比较了
      

  5.   

    $result = array_unique($yourarray);
    if(count($result)!=count($yourarray))
        echo "有重复";
      

  6.   

    把#4的函数代码修改一下就可以了,如下:function foo($v) {
      $t =explode('-', $v);
      $arr=range($t[0], $t[1]);
      if(count($arr)>10)//数组元素个数超过10个就给出信息并退出!否则返回该数组
    exit('数组超过了规定的长度');
      else
      return $arr; 
    }