2012-10-01 41 views
2

我一直在試圖找到類似於array_unique()的程度,或者刪除數組中的所有重複項。然而,在這種特殊情況下,我需要一個以逗號分隔的數組作爲結果,而不是鍵值對。如果可以的話,我想要做的就是避免通過循環來執行此操作。沒有索引的PHP array_unique

所以,如果有類似array_unique()的東西或我可以應用於我的數組,然後去除數字索引,然後我全力以赴提供建議。

目前我通過一個循環來構建初始數組,這個循環遍歷5到150,000個條目,其中一個特定條目可以具有大約1,000個可能的3個點樣式版本號中的任何一個。這就是我構建這個數組的原因。所以我有很多重複放入數組

例如:

$myarray = array(); 
foreach($obj as $prod) 
{ 
    //cycling over the master loop adding all my other stuff and building it out.. 
    $myarray[] = $prod['version']; 
} 

,給了我相當大的數組中的格式,我想只是

Array(
    "1.0.0", 
    "1.0.1", 
    "3.0.2220", 
    "2.0.0", 
    "2.0.1", 
    "1.8.11", 
    "3.0.2220", 
    "3.0.2220", 
    "2.0.0", 
    "2.0.0", 
    "2.0.0" 
) 

凡AFTE循環完成我做。

$myarray = array_unique($myarray); 

這給我留下了像

Array(
    [0] = "1.0.0", 
    [1] = "1.0.1", 
    [2] = "3.0.2220", 
    [3] = "2.0.0", 
    [4] = "2.0.1", 
    [5] = "1.8.11", 
) 

數組時,哪個不希望,期望作爲最終的結果是..

Array(
    "1.0.0", 
    "1.0.1", 
    "3.0.2220", 
    "2.0.0", 
    "2.0.1", 
    "1.8.11", 
) 

我在哪裏可以再整理出來按照從最早的順序列表到最新版本..

+0

即使元素在您需要的陣列具有某種索引。你有沒有顯示這個問題,或輸出它/出口? – pp19dd

+0

確實* 3.0.2220 *之前* 2.0.0 *在*最早到最新版本*?你在尋找什麼樣的分類方法?而對於你的信息,甚至關聯數組也有一個索引:) –

+0

'usort()'我在哪裏排序版本更大到目前較小,我工作。這種問題並不像我的大腦放屁那樣嚴重,而是因爲我問了這個問題而苦惱,這個問題實際上與我從前端實際工作的某些事情有關,而不像我認爲的那樣實際發生在後端上最初 – chris

回答

4

此:

Array(
    [0] = "1.0.0", 
    [1] = "1.0.1", 
    [2] = "3.0.2220", 
    [3] = "2.0.0", 
    [4] = "2.0.1", 
    [5] = "1.8.11", 
) 

這:

Array(
    "1.0.0", 
    "1.0.1", 
    "3.0.2220", 
    "2.0.0", 
    "2.0.1", 
    "1.8.11", 
) 

相同的事情,在PHP中所有陣列有一個指標,在最後一個例子,它只是未將它們打印,但它們在那裏,如果你沒有明確指定索引,它們只是從零開始的順序整數,就像第一個例子。

在你的最後一個例子,這顯然沒有索引,如果我們把它叫做$array,我們可以做以下打印其索引的一個:

foreach ($array as $key => $value) { 
    echo $key; //this will print the indexes of the array 
} 
+0

我在尋找各種各樣的清單,抱歉,那是其中一個早上..但我剛剛解決了我自己的問題,這是我在我正在做的事情的JavaScript方面的一個失誤..這讓我絆倒了 – chris

+1

好吧,我很高興你解決了你的困惑:-) – Nelson

0

你想要一個沒有鍵的數組?每個數組都有鍵。