Php 组简单数组

Php 组简单数组,php,arrays,Php,Arrays,对简单数组进行分组时遇到问题。要分组大小和数量总和。这些是鞋子的尺寸 这是我的阵列: Array ( [0] => Array ( [sku] => '82368-21' [size] => 36 [quantity] => 1 ) [1] => Array ( [sku] => '82368-21' [size] => 36 [qu

对简单数组进行分组时遇到问题。要分组大小和数量总和。这些是鞋子的尺寸

这是我的阵列:

Array
(
[0] => Array
    (
        [sku] => '82368-21'
        [size] => 36
        [quantity] => 1
    )

[1] => Array
    (
        [sku] => '82368-21'
        [size] => 36
        [quantity] => 3
    )

[2] => Array
    (
        [sku] => '82368-22'
        [size] => 38
        [quantity] => 0
    )

[3] => Array
    (
        [sku] => '82368-23'
        [size] => 39
        [quantity] => 2
    )

[4] => Array
    (
        [sku] => '82368-23'
        [size] => 39
        [quantity] => 1
    )
)
正如你所看到的,鞋子有多种尺寸和数量。那里 无需删除任何重复项,因为它们应按大小分组。 我想输出以下内容:

 Array
(
[0] => Array
    (
        [sku] => '82368-21'
        [size] => 36
        [quantity] => 4
    )


[1] => Array
    (
        [sku] => '82368-22'
        [size] => 38
        [quantity] => 0
    )

[2] => Array
    (
        [sku] => '82368-23'
        [size] => 39
        [quantity] => 3
    )
)

您可以通过一个简单的foreach循环来实现这一点:

 $array = array (
    0 => 
    array (
        'size' => 36,
        'quantity' => 1
    ),
    1 => 
    array (
        'size' => 36,
        'quantity' => 3
    ),
    2 => 
    array (
        'size' => 38,
        'quantity' => 0
    ),
    3 => 
    array (
        'size' => 39,
        'quantity' => 2
    ),
    4 => 
    array (
        'size' => 39,
        'quantity' => 1
    )
);

$out = [];

foreach($array as $value){

    $key = $value['size'];
    if(!isset($out[$key])){
        $out[$key] = $value;
    }else{
        $out[$key]['quantity'] += $value['quantity'];
    }
}

print_r($out);
输出

Array
(
    [36] => Array
        (
            [size] => 36
            [quantity] => 4
        )

    [38] => Array
        (
            [size] => 38
            [quantity] => 0
        )

    [39] => Array
        (
            [size] => 39
            [quantity] => 3
        )

)
Array
(
    [0] => Array
        (
            [size] => 36
            [quantity] => 4
        )

    [1] => Array
        (
            [size] => 38
            [quantity] => 0
        )

    [2] => Array
        (
            [size] => 39
            [quantity] => 3
        )

)
我想你遗漏的是用尺寸作为关键。使用数组时,当您希望使用单个值匹配对内容进行分组或组合时,最好将该值用作数组键。这样就更容易在输出数组中找到组。完成后,您可以始终使用数组_值将键重置为正常编号的索引

 //reset the array keys
 $out = array_values($out);
 print_r($out);
输出

Array
(
    [36] => Array
        (
            [size] => 36
            [quantity] => 4
        )

    [38] => Array
        (
            [size] => 38
            [quantity] => 0
        )

    [39] => Array
        (
            [size] => 39
            [quantity] => 3
        )

)
Array
(
    [0] => Array
        (
            [size] => 36
            [quantity] => 4
        )

    [1] => Array
        (
            [size] => 38
            [quantity] => 0
        )

    [2] => Array
        (
            [size] => 39
            [quantity] => 3
        )

)

干杯

你试过什么?附言。我已经解决了。检查-我认为这是同一个问题…可能是@DavidWinder的重复-这是相似的,但期望的输出是非常不同的。也许输出是不同的,但到达那里的方式是相同的-我希望OP自己能做到这一点。请注意,其他一些答案给出了与此处要求相同的输出。这太棒了,谢谢!如果我想添加另一个键,比如我编辑的问题,该怎么办。添加[sku]也..?哦,添加时没有更改任何内容。谢谢