PHP - 从数组中删除重复项,然后删除空值,然后重组

时间:2012-10-25 12:12:44

标签: php

我有一个数组(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)

是否有一些功能可以达到这个目的?

编辑问题

3 个答案:

答案 0 :(得分:9)

通过array_unique运行数组后使用array_filter

$city = array_filter($city);

来自documentation

  

如果没有提供回调,则将删除所有输入等于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));