5

我正在尝试学习如何使用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。经过几次测试后,我认为它在找到第一个重复项后停止查找。这是应该发生的事情吗?

4

2 回答 2

9

$uniques输出的 原因是

 Array
(
    [0] => 1
    [1] => 5
    [2] => 2
    [3] => 6
    [4] => 3
    [6] => 7
)

您的数组不包含 key 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];
于 2014-02-13T19:06:54.307 回答
8

由于array_unique保留了密钥,因此您无法使用循环$uniques正确访问数组。for使用foreach循环或将代码的第七行更改为:

$uniques = array_values(array_unique($array, SORT_REGULAR));
于 2014-02-13T19:03:04.057 回答