我有一个数组(sizeofarray = 5)
$city[0] = 'Newyork'
$city[1] = 'Paris'
$city[2] = 'Paris'
$city[3] = 'Newyork'
$city[4] = 'Amsterdam'
(sizeofarray = 5)
我使用array_unique()删除了dupes并得到了这个:
$city[0] = 'Newyork'
$city[1] = 'Paris'
$city[4] = 'Amsterdam'
(sizeofarray = 3)
但现在我想要这个:
$city[0] = 'Newyork'
$city[1] = 'Paris'
$city[2] = 'Amsterdam'
(sizeofarray = 3)
是否有一些功能可以达到这个目的?
编辑问题
答案 0 :(得分:9)
通过array_unique
运行数组后使用array_filter
:
$city = array_filter($city);
如果没有提供回调,则将删除所有输入等于
FALSE
的条目(请参阅转换为布尔值)。
但是,如果您的某个数组元素等于"0"
, as when converted to boolean, its value is false
,则可能会遇到错误。在这种情况下,您必须使用自定义回调函数。
在您的问题中,似乎只有数组索引失序,并且数组中没有实际的空字符串元素。尝试在array_unique
之后通过array_values
运行数组以重置索引:
$city = array_unique($city);
$city = array_values($city);
答案 1 :(得分:2)
除了Tim Cooper的回复,请使用array_values()
重新索引数组:
$city = array_unique($city);
$city = array_filter($city);
$city = array_values($city);
并确保相同的城市具有相同的名称,因为'New York' != 'Newyork'
。否则你需要额外的过滤。
答案 2 :(得分:0)
试试这样:
$city=array_values(array_unique($city));