I am trying to learn how to use array_unique, so I made some sample code and I didn't get what I expected.
$array[0] = 1;
$array[1] = 5;
$array[2] = 2;
$array[3] = 6;
$array[4] = 3;
$array[5] = 3;
$array[6] = 7;
$uniques = array_unique($array, SORT_REGULAR);
for($i = 0; $i < count($uniques); $i++)
echo $uniques[$i];
For example this gives me the output of '15263' but not 7. After a few test I think that it stops looking after it finds the first duplicate. Is that what is supposed to happen?
Reason for $uniques
output is
Array
(
[0] => 1
[1] => 5
[2] => 2
[3] => 6
[4] => 3
[6] => 7
)
Your array doesn't contain key 5
, but in your for
loop echo $uniques[$i];
not hold the value of echo $uniques[5];
. that is the reason value 7
is missing.
Try this,
foreach($uniques as $unique){
echo $unique;
}
instead of
for($i = 0; $i < count($uniques); $i++)
OR, you can re-index the array using array_values($uniques)
and use,
$uniques = array_values($uniques);
for($i = 0; $i < count($uniques); $i++)
echo $uniques[$i];
Since array_unique
preserves the keys, you can’t access the array $uniques
properly with a for
loop. Either use a foreach
loop or change the seventh line of your code to:
$uniques = array_values(array_unique($array, SORT_REGULAR));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With