array_unique对于简单数组不一致

时间:2017-01-02 00:38:56

标签: php arrays duplicates

为什么会这样?

echo json_encode(array_unique([1,2,3,4,4]));

输出

[1,2,3,4]

echo json_encode(array_unique([1,2,3,3,4]));

输出

{"0":1,"1":2,"2":3,"4":4}

这导致了一些非常奇怪的错误,我根本无法理解这里发生了什么。我只是想从数组中删除重复项并将其作为数组返回。

1 个答案:

答案 0 :(得分:2)

array_unique([1,2,3,4,4])返回:

array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
}
  

请注意,键是顺序的

array_unique([1,2,3,3,4]))返回时:

array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [4]=>
  int(4)
}
  

请注意密钥2和密钥4之间的跳转

因此 - json_encode将省略第一个数组中的keys(并将其保留为array个对象),而在第二个数组中,json_encode将将array视为object并保留密钥。

您可以使用array_values(获取值并忽略keys)。