如何在PHP中比较数组值?

时间:2014-11-19 12:05:59

标签: php arrays

我需要将数组值相互比较。这些值是唯一的ID。因此,必须检查ID值是否重复。

<?php
 $id=array("firstid2012","secondid2014","thirddid2010","fourthid2014");
 $idcount=count($id);
 for($i=0;$i<$idcount;$i++){
 //how to compare?? 
 }  
 ?>

如果重复的id为真,那么我必须更改该数组值的值。所以我需要知道哪个数组值也重复了。

7 个答案:

答案 0 :(得分:1)

if (count($idvalues) == count(array_unique($idvalues))){
  //ALL VALUES ARE DISTINCTS
}
else {
  //THERE ARE DUPLICATED VALUES
  $duplicated=array();
  $visited=array();
  foreach($idvalues as $value){
      if (in_array($value,$visited)){
         $duplicated[]=$value;
      }
      $visited[]=$value;
  }
  $duplicated=array_uniq($duplicated);
}

答案 1 :(得分:1)

您感兴趣的一些功能:

array_unique:删除重复值

http://php.net/manual/en/function.array-unique.php

array_intersect:返回多个数组中出现的值。

http://php.net/manual/en/function.array-intersect.php

答案 2 :(得分:0)

这是从数组中获取所有唯一值的最快方法:

$unique = array_keys(array_flip($array));

在后端它使用一个hashmap,而如果你使用array_unique只是迭代遍在数组上,这是非常低效的。差异在于数量级。

答案 3 :(得分:0)

您可以使用array_unique()来获取所有唯一值的数组,然后将大小与原始数组进行比较:

if (count(array_unique($submitted_genres)) !== count($submitted_genres)) {
// there's at least one dupe
}

答案 4 :(得分:0)

你不需要运行任何循环只需使用array_unique();我两次添加了fourthid2014

$id[] = array("firstid2012", "secondid2014", "thirddid2010", "fourthid2014", "fourthid2014");
print_r($id[0]); // print it 5 values 
$result = array_unique($id[0]);
print_r($result);// print it 4 values 

答案 5 :(得分:-1)

您可以使用array_unique()函数删除重复值 请参阅此网址以获取更多信息http://www.w3schools.com/php/func_array_unique.asp

答案 6 :(得分:-1)

一种简单的方法是

<?php
 $id[]=$idvalues;
 $idcount=count($id);
 for($i=0;$i<$idcount;$i++){
   for($ii=0; $ii<$idcount;$ii++)
   {
    if( $i != $ii ) //We don't want to compare the same index to itself
    {
      if( $id[$i] == $id[$ii] )
      {
        //Found same values at both $i and $ii
        //As the code is here, each duplicate will be detected twice
      }
    }
 }  
?>