php 简单数组问题

问题:Array ( [0] => [1] => 3 2 [2] => 4 5 [3] => 3 4 [4] => 2 3 [5] => 1 2 )

我想检查数组当中是否存在两个数是相反的:比如3 2 和2 3

2 3 之间是空格隔开

 

自己写了一个简单的:

foreach($array as $value) {
    $v=explode(" ",$value);
     foreach($array as $num){
    	$m=explode(" ",$value);
    	if($m[0]==$v[1]&&$m[1]==$v[0]){
    		return "get";
    	}
    }
    
}


感觉用了两次foreach和explode,代码冗余,效率不高。

后来论坛发帖,有人这样写:

foreach($array as $value) {
    $v=explode(" ",$value);
      foreach($array as $num){
    	if(strcmp($value,strrev($num))==0){
    		return "get";
    	}
    }
    
}


但还是两次foreach

 

后来又有人回帖:

foreach($ar as $v) {
  $t[] = join(' ', array_reverse(explode(' ', $v)));
}
print_r(array_intersect($ar, $t));


 

方法确实不错:

$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;
 } 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值