2011-09-26 90 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

回调函数只传递数组的一个元素。 –