我正在尝试学习如何使用array_unique,因此我制作了一些示例代码,但我没有得到我期望的结果。
$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];
例如,这给了我输出'15263'而不是7.经过一些测试后,我认为它停止了它找到第一个副本。是应该发生什么?
答案 0 :(得分:9)
$uniques
输出的原因是
Array
(
[0] => 1
[1] => 5
[2] => 2
[3] => 6
[4] => 3
[6] => 7
)
您的数组不包含键5
,但在for
循环中echo $uniques[$i];
不包含echo $uniques[5];
的值。这就是缺少值7
的原因。
试试这个,
foreach($uniques as $unique){
echo $unique;
}
而不是
for($i = 0; $i < count($uniques); $i++)
或者,您可以使用array_values($uniques)
重新索引数组并使用
$uniques = array_values($uniques);
for($i = 0; $i < count($uniques); $i++)
echo $uniques[$i];
答案 1 :(得分:8)
由于array_unique
保留了密钥,因此无法使用$uniques
循环正确访问数组for
。使用foreach
循环或将代码的第七行更改为:
$uniques = array_values(array_unique($array, SORT_REGULAR));