2011-09-26 47 views
0

重複鍵我有一個數組稱爲$myarray -如何刪除陣列

id position status name 

4 23  4 john 

3 45  3 mike 

4 23  0 john 

7 25  2 sam 

我需要通過「ID」和濾波器陣列時,類似的記錄發現,我需要評估由「狀態「鍵刪除匹配行中的數字,該數字爲0或小於」狀態「。有沒有辦法像一些功能一樣快速地做到這一點?

+0

我感到困惑的陣列結構。如果我想要麥克的名字,我會看看$ myarray [1] ['name'](第1行)還是$ myarray [3] ['name'](id = 3) –

+0

注意: PHP數組。只有重複的值。正如這個問題是許多其他的重複:http://stackoverflow.com/questions/5960190/how-to-remove-duplicate-values-in-an-array – thwd

回答

0

這將刪除所有發生的status=0。如果妳想要保留這些行,當沒有其他配套id,除去$value['status'] > 0 &&

$cleanarray = array(); 
foreach ($myarray as $value) { 
    if (
     $value['status'] > 0 && (
      !array_key_exists($value['id'], $cleanarray) || 
      $value['status'] > $cleanarray[$value['id']]['status'] 
     ) 
    ) $new_cleanarray[$value['id']] = $value; 
} 
1

您可以使用array_multisort(..)排序id ASC然後status DESC。然後,您可以遍歷已排序的數組並刪除之前已經看到id的行。

0

array_filter()

這可能是你使用

+0

'array_filter'不比較陣列..它只看一個。 –

+0

但它使用回調函數()..這可能會起作用 – user909058

+0

回調函數只傳遞數組的一個元素。 –