1

以下の$test配列があります

        Array
(
    [0] => Array
        (
            [quantity] => 3
            [stock_id] => _PHONE
        )

    [1] => Array
        (
            [quantity] => 3
            [stock_id] => 102
        )

    [2] => Array
        (
            [quantity] => 4
            [stock_id] => _PHONE
        )

    [3] => Array
        (
            [quantity] => 3
            [stock_id] => 102
        )

    [4] => Array
        (
            [quantity] => 4
            [stock_id] => _PHONE
        )

    [5] => Array
        (
            [quantity] => 6
            [stock_id] => _PHONE
        )

    [6] => Array
        (
            [quantity] => 2
            [stock_id] => 102
        )

)

同じstock_idキーを1つに合計するには、以下の関数を使用します:

function sum($array, $key){
    isset($array[$key['stock_id']]) ? $array[$key['stock_id']]['quantity'] += $key['quantity'] : $array[$key['stock_id']] = $key;  
    return $array;
};

//merge same stock_id and sum the quantity same stock id
$sum_same_stock_id = array_reduce($test, "sum"); 

結果は以下のようにうまくいきました:

$sum_same_stock_id:

Array
(
    [_PHONE] => Array
        (
            [quantity] => 17
            [stock_id] => _PHONE
        )

    [102] => Array
        (
            [quantity] => 8
            [stock_id] => 102
        )

)

ここでの質問は、固定値だけでなく動的キー値を上記の関数に渡したいということstock_idです。さまざまな方法を試しましたが、まだ方法がわかりません。そして、それらの関数もクラスに入れることができますか?quantitysum

どんなアドバイスでも大歓迎です!

4

0 に答える 0