Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组\对于简单数组,唯一不一致_Php_Arrays_Duplicates - Fatal编程技术网

Php 数组\对于简单数组,唯一不一致

Php 数组\对于简单数组,唯一不一致,php,arrays,duplicates,Php,Arrays,Duplicates,为什么会这样 echo json_encode(array_unique([1,2,3,4,4])); 输出 [1,2,3,4] {"0":1,"1":2,"2":3,"4":4} 及 输出 [1,2,3,4] {"0":1,"1":2,"2":3,"4":4} 这给我带来了一些非常奇怪的错误,我简直无法理解这里发生了什么。我只想从数组中删除重复项并将其作为数组返回。array\u unique([1,2,3,4,4])返回: array(4) { [0]=> int(1

为什么会这样

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

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

输出

[1,2,3,4]
{"0":1,"1":2,"2":3,"4":4}
这给我带来了一些非常奇怪的错误,我简直无法理解这里发生了什么。我只想从数组中删除重复项并将其作为数组返回。

array\u unique([1,2,3,4,4])
返回:

array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
}
array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [4]=>
  int(4)
}
请注意,这些键是按顺序排列的

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

array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
}
array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [4]=>
  int(4)
}
注意键
2
和键
4
之间的跳跃

因此-
json_encode
将省略第一个数组中的
(并将其保留为
数组
对象),而在第二个数组中-
json_encode
将把您的
数组
视为
对象
并保留键


您可以使用
array\u values
(获取值并忽略
)。

array\u unique()
不会对数组重新编制索引,因此当您用json编码数组时,它将在输出中包含键。@Rizier123-但为什么不在第一种情况下?作为参数提供的两个数组中都有重复的整数。@nickdnk Read:有许多类似的问题。@nickdnk您需要的是:
json_编码(数组_值(数组_唯一([1,2,3,3,4]))