2013-06-06 24 views
0

當我做如何使用PHP刪除重複項並僅顯示每個用戶標識的項目?

foreach($hugeobject as $k => $obj){ 
    echo $obj->userid . " = " . $obj->itemid."<br/>"; 
} 

這裏的結果:

147099 = 594088 
147099 = 594086 
147099 = 594085 
147099 = 594082 
147099 = 594083 
147099 = 594089 
161676 = 594091 
196351 = 593971 
196351 = 593904 
196387 = 593894 
196382 = 593892 
196382 = 593891 
196382 = 593889 
196382 = 593888 
196351 = 593887 
196351 = 593865 
196351 = 593864 
196722 = 593798 
196351 = 593795 
196351 = 593794 
196351 = 593793 
196351 = 593792 
196722 = 593790 
196351 = 593789 

,目標是顯示這些只是:使用array_unique()

147099 = 594088 
161676 = 594091 
196351 = 593971 
196382 = 593892 
196722 = 593798 

我試過,甚至與array_map()並結合其serialize() ......但都沒有幫助。那麼我該如何去做這件事?

+1

請這些存儲何種對象分享。這些字符串包括'='? – Aquillo

+0

它是一個巨大的對象數組,其中包含大量數據,我粘貼的數據只是用戶標識,它屬於它的itemid。不包含「=」..我只是通過這種方式顯示它在stackoverflow中提問時很容易看到 – sasori

回答

2

只要設法與普通foreach -loop這樣寫:

<?php 

$buffer = array(); 

foreach($hugeobject as $obj){ 
    if(isset($buffer[$obj->userid]))continue; 

    $buffer[$obj->userid] = $obj; 
} 

foreach($buffer as $obj){ 
    echo $obj->userid . " = " . $obj->itemid . "<br/>"; 
} 

?> 
+0

請不要在您的建議解決方案中包含「=」...我只在我的示例數據中加入以使我的問題更加清晰 – sasori

+0

@sasori然後發佈原始結構。 – BlitZ

+0

我張貼從那裏將數據從 – sasori

-1

如果你的數據是一個數組,那麼試試這個:

$result = array(); 
foreach($hugeobject as $k => $obj){ 
    if(!isset($result[$obj->userid])){ 
     $result[$obj->userid] = $obj->itemid; 
    } 
} 
+0

這只是找到了唯一的密鑰,但密鑰保證是唯一的開始。重點是什麼? – Barmar

+0

他想獲得每個鍵的第一個值。編輯我的答案.... – HarryFink

相關問題