Why are you doing it like this:
for($x=0; $x<4; $x++) {
if($name[$x] == /*Other members of array*/) {
header("location:../error/duplicates.php");
exit;
}
}
When you could be use array_unique instead:
if (count(array_unique($name)) < count($name)) {
header("location:../error/duplicates.php");
exit;
}
The logic is basically, the array_unique tells you how many unique items are in an array, right? And if the $name array contains 4 items, count(array_unique()) should return 4. Which then should match the count() of the items in $name, right? Well, if count(array_unique()) has less items than count() it means duplicates were filtered out.
Here it is without the header but an echo instead as well as an else for simpler debugging.
$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!';
}
Also you could use array_diff_key with array_unique. Basically do an array_unique on $name and then run that through array_diff_key comparing it to the original $name. if the count is greater than 0 then there is a dupe.
$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!';
}
EDIT I just edited the last suggestion to use a variable for $name_diff since if it does return a value more than 0 you now have that value in an array & can act on it.
if(in_array($name[$x],$array)...