【问题标题】:Comparing Array Values in For Loop (PHP)在 For 循环 (PHP) 中比较数组值
【发布时间】:2013-12-28 04:50:21
【问题描述】:

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

【问题讨论】:

标签: php arrays compare duplicates


【解决方案1】:

你为什么要这样:

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,然后通过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,那么您现在在数组中拥有该值并可以对其进行操作.

【讨论】:

    【解决方案2】:

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

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

    重复检查:

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

    【讨论】:

    • 问题是我不是在寻找存在于数组中的名字,而是寻找它的重复存在于数组中。
    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 2017-04-29
    • 2023-04-05
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    相关资源
    最近更新 更多