PHP解析数组并计算新数组中的值

问题描述 投票:0回答:1

我有一个看起来像这样的PHP数组...

$array = [

    'item1' => [
        [
            'productCount' => '3',
            'value' => 'red',
        ],
        [
            'productCount' => '3',
            'value' => 'green',
        ],
        [
            'productCount' => '3',
            'value' => 'green',
        ]
    ],

    'item2' => [
        [
            'productCount' => '1',
            'value' => 'purple',
        ]
    ],

];

我正在尝试解析它,所以看起来像这样...

Array
(
    [item1] => Array
        (
            [productCount] => 3
            [red] => 1
            [green] => 2
        )
    [item1] => Array
        (
            [productCount] => 1
            [purple] => 1
        )
)

到目前为止,我有这个。...

$finalArray = array();

foreach ($array as $key => $arrayItem) {

    $finalArray[$key] = $arrayItem['productCount'];

    $valueCount = count($arrayItem['productCount']);

    $finalArray[$key] = $valueCount;

}

我知道这还不多,但是我现在仍处于困境。如何处理这些值并在新数组中对其进行计数?

php arrays
1个回答
0
投票

此代码将为您提供所需的结果。它循环遍历上层数组以获得新数组的键和productCount值。然后,它遍历第二级数组以获取每个value的计数:

$output = array();
foreach ($array as $key => $items) {
    $output[$key] = array('productCount' => $items[0]['productCount']);
    foreach ($items as $item) {
        $value = $item['value'];
        $output[$key][$value] = ($output[$key][$value] ?? 0) + 1;
    }
}
print_r($output);

输出:

Array
(
    [item1] => Array
        (
            [productCount] => 3
            [red] => 1
            [green] => 2
        )
    [item2] => Array
        (
            [productCount] => 1
            [purple] => 1
        )
)

Demo on 3v4l.org

© www.soinside.com 2019 - 2024. All rights reserved.