首先谢谢您抽出时间来看此帖
  我创建了一个二维数组,二维数组里的数组中包括一个url元素,例:$result[$i][0] 某行的第0个元素就是url
而这个$result数组是不断添加数据的,我想在每次添加数据之前,先判断是否包含了重复的url,应该如何去做?
我用in_array判断的时候总是出错,可能是二维数组不能判断,小弟不才,请高手指点。

解决方案 »

  1.   

    写个方法判断一下:
    function isExist($url,$result){
       $exist = false;
       foreach($result as $value){
         if(in_array($url,$value)){
            $exist = true;
            break;
         }
       }
       return $exist;
    }
      

  2.   


    function array_multi_search( $p_needle, $p_haystack )
       {
          
           if( in_array( $p_needle, $p_haystack ) )
           {
               return true;
           }
           foreach( $p_haystack as $row )
           {
               if( array_multi_search( $p_needle, $row ) )
               {
                   return true;
               }
           }       return false;
       } 
      

  3.   

    用array_search就能做到了..多看看手册.二唯数组也能判断
      

  4.   

    array_search --  在数组中搜索给定的值,如果成功则返回相应的键名 
      

  5.   

    楼上两位,不知有没有亲自做过测试?
    貌似 array_search 不支持二维数组,测试代码如下<?php
    $array = array(0 => 'blue', 1 => 'red', 2 => 'black', 3 => 
    array(0 =>'white',1 =>'green')
    );$key1 = array_search('green', $array);
    var_dump($key1);//输出:bool(false)
    ?>
      

  6.   

    二楼代码收藏了,可以判断多维数组的,不过测试时有warning
    测试代码如下:<?php
    $array = array(0 => 'blue', 1 => 'red', 2 => 'black', 3 => 
    array(0 =>'right',1 =>'green')
    );
    function array_multi_search( $p_needle, $p_haystack ) 
      { 
          
          if( in_array( $p_needle, $p_haystack ) ) 
          { 
              return true; 
          } 
          foreach( $p_haystack as $row ) 
          { 
              if( array_multi_search( $p_needle, $row ) ) 
              { 
                  return true; 
              } 
          }       return false; 
      } 
    $key1 = array_multi_search('green', $array); // $key = 2;
    var_dump($key1);//bool(false)
    ?> 输出:Warning: in_array() [function.in-array]: Wrong datatype for second argument in PHPDocument1 on line 8Warning: Invalid argument supplied for foreach() in PHPDocument1 on line 12Warning: in_array() [function.in-array]: Wrong datatype for second argument in PHPDocument1 on line 8Warning: Invalid argument supplied for foreach() in PHPDocument1 on line 12Warning: in_array() [function.in-array]: Wrong datatype for second argument in PHPDocument1 on line 8Warning: Invalid argument supplied for foreach() in PHPDocument1 on line 12
    bool(true)
      

  7.   

    是的,书写健壮的代码是很重要的!!!$array = array(0 => 'blue', 1 => 'red', 2 => 'black', 3 => 
    array(0 =>'right',1 =>'green')
    );function array_multi_search( $p_needle, $p_haystack ) {
      if(! is_array($p_haystack)) return false;
      if( in_array( $p_needle, $p_haystack ) ) { 
              return true;
      } 
      foreach( $p_haystack as $row ) { 
        if( array_multi_search( $p_needle, $row ) ) { 
           return true; 
        } 
      } 
      return false; 
    }
     
    $key1 = array_multi_search('green', $array); // $key = 2;
    var_dump($key1);//bool(false)
      

  8.   

    $array = array(0 => 'blue', 1 => 'red', 2 => 'black', 3 => 
    array(0 =>'right',1 =>'green') 
    ); function array_multi_search( $p_needle, $p_haystack ) {
      if(! is_array($p_haystack)) return false; 
      foreach( $p_haystack as $row ) {
        if(!is_array($row)){
           if($row == $p_needle){
              return true;
           }
        }else{
           in_array($p_needle,$row) && return true;
        }
      } 
      return false;
    } $key1 = array_multi_search('green', $array); // $key = 2; 
    var_dump($key1);//bool(false)