簡體   English   中英

組合數組中的相同值

[英]combine the same values in array

請幫我組合數組值。 我有相同的數組:在我的情況下,我應該像密鑰一樣保存客戶名稱。

    Array
(
    [Test Name] => Array
        (
            [0] => Array
                (
                   [name] => 
                  banana
                    [id] => 
                  45002
                    [quantity] => 
                  10
                )
            [1] => Array
                (
                    [name] => 
                 banana
                    [id] => 
                 45002
                    [quantity] => 
                   20
                )
            [3] => Array
                (
                    [name] => 
                    apple 
                    [id] => 
                   23402
                    [qua] => 
                    1
                )

            [5] => Array
                (
                    [name] => 
                   cherry 
                    [id] => 
                   40017
                    [qua] => 
                   7
                )

如何獲得這樣的東西:

Array
(
    [Test Name] => Array
        (
            [0] => Array
                (
                   [name] => 
                  banana
                    [id] => 
                  45002
                    [quantity] => 
                  30 // summ quantity but unique name and id 
                )
            [1] => Array
                (
                    [name] => 
                    apple 
                    [id] => 
                   23402
                    [qua] => 
                    1
                )

            [2] => Array
                (
                    [name] => 
                   cherry 
                    [id] => 
                   40017
                    [qua] => 
                   7
                )

在我的情況下,我應該像鑰匙一樣保存客戶姓名。 然后我會把它上傳到桌子上。

您可以使用array_maparray_reduce來完成它:

$results = array_map(function ($result) {
    return array_reduce($result, function ($carry, $item) {
        if (isset($carry[$item['id']])) {
            $carry[$item['id']]['quantity'] += $item['quantity'];
        } else {
            $carry[$item['id']] = $item;
        }
        return $carry;
    }, array());
}, $results);

從文檔:

array_map()在對每個元素應用回調函數后返回一個包含 array1 的所有元素的數組。

array_reduce()將回調函數迭代地應用於數組元素,從而將數組縮減為單個值。

在我們的例子中,給array_reduce函數的回調返回一個最終數組,其中包含id唯一項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM