比较For循环中的数组值(PHP)

时间:2013-12-28 04:50:21

标签: php arrays compare duplicates

我有一个for循环,我想将每个值与数组中的其他值进行比较。如果有重复项,页面将重定向。如何将值$name[$x]与$ name数组中的其他值进行比较,无论它们是在$name[$x]之前还是之后?

for($x=0; $x<4; $x++) {
    if($name[$x] == /*Other members of $name*/) {
        header("location:../error/duplicates.php");
        exit;
    }
}

2 个答案:

答案 0 :(得分:3)

你为什么这样做:

for($x=0; $x<4; $x++) {
    if($name[$x] == /*Other members of array*/) {
        header("location:../error/duplicates.php");
        exit;
    }
}

当您可以使用array_unique时:

if (count(array_unique($name)) < count($name)) {
  header("location:../error/duplicates.php");
  exit;
}

逻辑基本上是,array_unique告诉你阵列中有多少独特的项目,对吧?如果$name数组包含4个项目,则count(array_unique())应该返回4.然后应该匹配count()中项目的$name,对吧?好吧,如果count(array_unique())的项目数少于count(),则表示重复项已被过滤掉。

此处没有header,而是echo而不是else,以便进行更简单的调试。

$name = array('bob','betty','dan','don'); // no dupes
$name = array('bob','betty','dan','dan'); // dupes

if (count(array_unique($name)) < count($name)) {
  echo 'Dupes!';
  exit;
}
else {
  echo 'No Dupes!';
}

您也可以将array_diff_keyarray_unique一起使用。基本上在array_unique上执行$name,然后通过array_diff_key将其与原始$name进行比较。如果count大于0则会有欺骗行为。

$name = array('bob','betty','dan','don'); // no dupes
$name = array('bob','betty','dan','dan'); // dupes

$name_diff = array_diff_key($name, array_unique($name));
if (count($name_diff) > 0) {
  echo 'Dupes!';
  echo '<pre>';
  print_r($name_diff);
  echo '</pre>';
  exit;
}
else {
  echo 'No Dupes!';
}

编辑我刚刚编辑了最后一个使用$name_diff变量的建议,因为如果它确实返回的值超过0,那么现在您在数组和放大器中有该值;可以采取行动。

答案 1 :(得分:1)

你可以尝试这个吗,你可以使用in_array php函数

if (in_array($name[$x], $yourarray)) {
    echo $name[$x] ." Exist";
 }

重复检查:

 if(count($yourarry)> count(array_unique($name))){
    //found duplicate
 }