6

我有一个数组(sizeofarray = 5)

$city[0] = 'Newyork'
$city[1] = 'Paris'
$city[2] = 'Paris'
$city[3] = 'Newyork'
$city[4] = 'Amsterdam'
(sizeofarray = 5)

我使用 array_unique() 来删除欺骗并得到了这个:

$city[0] = 'Newyork'
$city[1] = 'Paris'
$city[4] = 'Amsterdam'
(sizeofarray = 3)

但现在我想要这个:

$city[0] = 'Newyork'
$city[1] = 'Paris'
$city[2] = 'Amsterdam'
(sizeofarray = 3)

有什么功能可以实现吗?

4

3 回答 3

10

array_filter通过以下方式运行数组后使用array_unique

$city = array_filter($city);

文档中:

如果没有提供回调,所有输入等于FALSE(请参阅转换为布尔值)的条目将被删除。

但是,如果您的数组元素之一等于 ,则您可能会遇到错误,"0"因为当转换为布尔值时,其值为false。在这种情况下,您必须使用自定义回调函数。


在您的问题中,似乎只有数组索引是乱序的,并且您的数组中没有实际的空字符串元素。尝试在重置索引array_values之后运行数组:array_unique

$city = array_unique($city); 
$city = array_values($city); 
于 2012-10-25T12:13:50.797 回答
2

除了 Tim Cooper 的回复,用于array_values()重新索引数组:

$city = array_unique($city);
$city = array_filter($city);
$city = array_values($city);

并确保相同的城市具有相同的名称,因为'New York' != 'Newyork'. 否则,您将需要额外的过滤。

于 2012-10-25T12:22:03.367 回答
0

试试这样:

$city=array_values(array_unique($city));
于 2012-10-25T12:19:52.357 回答