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]))代码>