你为什么要这样:
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_key 与array_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,那么您现在在数组中拥有该值并可以对其进行操作.