Array ( [0] => [1] => 3 2 [2] => 4 5 [3] => 3 4 [4] => 2 3 [5] => 1 2 )我想检查数组当中是否存在两个数是相反的:比如3 2 和2 32 3 之间是空格隔开

解决方案 »


  1. $str = array("3 2","4 5","3 4","2 3","1 2");
    $res = array();
    $i=0;
    foreach($str as $k=>$s1){
      foreach($str as $j=>$s2){
        if($s1 == strrev($s2)) {
          $res[$i]['key1']=$k;
          $res[$i]['val1']=$s1;
          $res[$i]['key2']=$j;
          $res[$i]['val2']=$s2;
          $i++;
        }else{
          break;
        }
      }
    }
    print_r($res);
    #没有测试,预计是这样,期待改进!
      


  2. $str = array("3 2","4 5","3 4","2 3","1 2");
    $res = array();
    $i=0;
    foreach($str as $k=>$s1){
      foreach($str as $j=>$s2){
        if(strcmp($s1, strrev($s2))==0) {  //比较字符串应该用strcmp(),反转字符串用strrev()
          $res[$i]['key1']=$k;
          $res[$i]['val1']=$s1;
          $res[$i]['key2']=$j;
          $res[$i]['val2']=$s2;
          $i++;
        }else{
          break;
        }
      }
    }
    print_r($res);
      

  3. <?php$arr = array("3 2","4 5","3 4","2 3","1 2");
    $tmp = array();
    foreach($arr as $item) {
     $newItem = implode(' ', array_reverse(explode(' ', $item)));
     if(isset($tmp[$newItem])) {
      echo 'you get it!';
      print_r($newItem);
     }
     $tmp[$item] = true;
    }
      

  4. $ar = array("3 2","4 5","3 4","2 3","1 2");
    foreach($ar as $v) {
      $t[] = join(' ', array_reverse(explode(' ', $v)));
    }
    print_r(array_intersect($ar, $t));
    Array ( [0] => 3 2 [3] => 2 3 ) 
      

类似问题 »