我想在每個子數組中搜索數組中的重複值,如果有數據,只保留連接到這個項目的最高值。匹配子串,只保留最高值
這是我的問題,但我喜歡添加一個例子來澄清事情!
這是我的數組:
Array
(
[0] => Array
(
[groupid] => 1
[points] => 5
)
[1] => Array
(
[groupid] => 1
[points] => 1
)
[2] => Array
(
[groupid] => 1
[points] => 4
)
[3] => Array
(
[groupid] => 2
[points] => 1
)
)
正如你可以看到,前三個項目具有相同的groupid
。我想匹配這些項目,並查看哪些項目具有最高點。另一個(具有最低點)應該被踢出陣列。
因此,在這種情況下,項目0
,1
和2
來自同一集團,但2
具有最高點。 0
和1
應該從陣列中刪除。
我期望的結果會是這樣的:
Array
(
[0] => Array
(
[groupid] => 1
[points] => 5
)
[1] => Array
(
[groupid] => 2
[points] => 1
)
)
我一直在努力了幾個小時,但現在還沒有運氣。也許我正在俯視一些非常簡單的事情,並且很難想出這件事......任何幫助將不勝感激!
編輯 這是一個Drupal站點(但不應該有任何區別),這是查詢:
foreach ($promotions as $value) {
$promo = db_query("SELECT * FROM {_promo_articles} WHERE art = :art AND promoid = :promoid", array(
':art' => $value['product'][0]->sku,
':promoid' => $value['promo_id'][0])) ->fetchAll();
}
這個信息從數據庫中來嗎?如果是這樣,那麼從數據庫中查詢可能會更容易。 – Neal
天真的做法就像做一個具有唯一值的數組(值是groupids)。然後迭代該數組,並找到這個數組中每個groupid的最大值? – Fallen
@Neal,是的......我也在想這個,但你會怎麼做呢? – Michiel