0
点赞
收藏
分享

微信扫一扫

testtestsetset


  PHP输出数组中重名的元素的几种处理方法,需要的朋友可以参考下

1.可以直接用php的内置函数array_intersect()?


  array array_intersect ( array $array1 , array $array2 [, array $ ... ] )?

  array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。?

  代码:?

  代码如下:?

$array1=array("a"=> "green", "red", "blue");?
  $array2=array("b"=> "green", "yellow", "red");?
  $result=array_intersect($array1, $array2);?
  ?>?

  输出结果:?

Array( [a]=> green [0]=> red)?

  2.也可以自己写一个算法:?

  代码如下:?

function my_array_same($a){?
  $b=array_unique($a);?
  $r=array_diff_key($a,$b);?
  echo "

";?

  $k=var_dump(array_unique($r));?  return $k;?  }?  $a=array("red", "green", "pink", "red", "yellow","pink", "red");?  $r=my_array_same($a);?  var_dump(array_unique($r));?  ?>?  输出结果:?  array(2) {?  [3]=>?  string(3) "red"?  [5]=>?  string(4) "pink"?  }?  3.还可以这么写:?  代码如下:?  function my_array_intersect($arr1,$arr2){?  for($i=0;$i



  $temp[]=$arr1[$i];?  }?  for($i=0;$i



  $temp[]=$arr2[$i];?  }?  sort($temp);?  $get=array();?  for($i=0;$i



  if($temp[$i]==$temp[$i+1])?  $get[]=$temp[$i];?  }?  return $get;?  }?  $array1=array("green", "red", "blue");?  $array2=array("green", "yellow", "red");?  echo "";?  print_r(my_array_intersect($array1, $array2));?  echo "";?  ?>?  如果是一维的数组,第三种算法比第一种快点.上述算法都适用于一维的数组,那么多维数组怎么查找相同的元素呢??  思路:可以把多维的数组转化成一维的数组,然后再利用上述算法输出。?  代码:?  代码如下:?  function toarr($arr){ //对数组进行递归,以字符串形式返回?  foreach ($arr as $k=>$v){?  if (!is_array($v)) {?  $str.=$v." ";?  }?  else{?  $str.=toarr($v);?  }?  }?  return $str;?  }?  上式把多维数组转化成字符串,然后利用expode函数转化成一维数组即可。?

举报
0 条评论