0

各サブ配列で重複する値を配列で検索し、存在する場合は、このアイテムに接続されている最大値のみを保持します。

それが私の質問ですが、物事を明確にするために例を追加するのが大好きです!

これは私の配列です:

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
        )
)

ご覧のとおり、最初の 3 つの項目は同じgroupidです。それらのアイテムを一致させて、どれが最も高いポイントを持っているかを確認したい. 他の 1 つ (最も低いポイント) は、アレイから追い出されます。

したがって、この場合、アイテム0とは同じグループに属しますが1、ポイントが最も高くなります。配列から削除する必要があります。2201

私の望む結果は次のようになります。

Array
(
    [0] => Array
        (
            [groupid] => 1
            [points]  => 5
        )
    [1] => Array
        (
            [groupid] => 2
            [points]  => 1
        )
)

数時間試してみましたが、まだ運がありません。たぶん、私は非常に単純なものを見落としており、これを理解するのが難しいと考えています...どんな助けもいただければ幸いです!

EDIT 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();
}
4

4 に答える 4

0

私は次のようなことをします:

$final_array = array();
foreach($array AS $element)
{
    if(!isset($final_array[$element["groupid"]]) ||
       $final_array[$element["groupid"]] < $element["points"])
            $final_array[$element["groupid"]] = $element["points"];
}

次に、次の$final_arrayようになります...

Array
(
    [1] => 5
    [2] => 1
)

(グループ 1 は 5 ポイント、グループ 2 は 1 ポイント)

于 2013-07-15T13:43:00.780 に答える