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



我有一个 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;
    }
}

你为什么要这样做:

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。那么哪个应该与$name中的项目count()相匹配,对吧? 好吧,如果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一起使用。基本上对$name进行array_unique,然后将其与原始$name进行比较array_diff_key运行。如果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您现在在数组中拥有该值并可以对其进行操作。

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

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

对于重复检查:

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

最新更新