2012-10-25 81 views
4

我有一個數組(sizeofarray = 5)PHP - 從數組中刪除重複,然後取出空值,然後重組

$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) 

有一些功能來實現這一目標?

編輯的問題

+2

我不知道你爲什麼會爲2和3'array_unique'越來越空完全刪除該數組中的重複的項目,所以你應該得到你的最後一個片段顯示結果。請參閱:http://pastie.org/5114229 –

+0

好吧,我很抱歉..我正在運行$ city [2]顯示錯誤的循環。重新構造我的問題 – JMDee

回答

8

使用array_filter運行通過array_unique後陣:

$city = array_filter($city); 

documentation

如果沒有回調提供,輸入的所有條目等於FALSE(見轉換爲布爾值)將被刪除。

但是,如果其中一個數組元素等於"0", as when converted to boolean, its value is false,則可能會遇到錯誤。在這種情況下,您必須使用自定義回調函數。


在你的問題,似乎只有數組索引是亂序,並且在您的數組中沒有實際的空字符串元素。嘗試運行陣列雖然array_valuesarray_unique重置索引:

$city = array_unique($city); 
$city = array_values($city); 
+0

我在重新構思我的問題。我正在運行一個循環,其中$ city [2]顯示爲空。它顯然會,因爲密鑰本身是缺席的。 – JMDee

+0

對不起。我編輯了這個問題。 – JMDee

0

嘗試這樣的:

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

除了蒂姆·庫珀的回答,請array_values()重新索引數組:

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

並確保相同的城市有相同的名稱,因爲'New York' != 'Newyork'。否則,你需要額外的過濾。

相關問題