PHP中的自定义数组排序


Custom Array Sorting in PHP

我有一个5级嵌套数组,我想用自定义的方式对它进行排序。

经过一些排序后,结构为:

[shortcode1] => Array
    (
        [country1] => Array
            (
                [count] => 10
                [revenue_value] => 11
            )
    )
[shortcode2] => Array
    (
        [country1] => Array
            (
                [count] => 24
                [revenue_value] => 52
            )
    )
[shortcode3] => Array
    (
        [country2] => Array
            (
                [count] => 25
                [revenue_value] => 52
            )
    )

我想要的结果是按国家对数组进行分组,并将其设置为:

[country1] => Array
(
    [count] => 34            // sum of all counts of country1
    [revenue_value] => 63    // sum of all revenue_values of country1
)
[country2] => Array
(
    [count] => 25            // sum of all counts of country2
    [revenue_value] => 52    // sum of all revenue_values of country2
)

这是我迄今为止的代码:

        <?php foreach ($country_shortcode as $shortcode): 
            $count = 0; 
            $revenue = 0;
            ?>
            <?php foreach ($shortcode as $country=>$value): ?>
                <?php 
                    $count += $value['count'];
                    $revenue += $value['revenue_value'];
                    $country_sum[$country] = array(
                            'count' => $count,
                            'revenue' => $revenue,
                        ); 
                    ?>
            <?php endforeach; ?>
        <?php endforeach; ?>

但它只显示每个国家的最后一个值

更新+答案:

这是更新后的代码,正是我想做的。

        $country_data;
        <?php foreach ($country_shortcode as $shortcode): 
            $count = 0; 
            $revenue = 0;
            ?>
            <?php foreach ($shortcode as $country=>$value): ?>
                <?php 
                    if (!isset($country_sum[$country])) $country_sum[$country] = array('count' => 0, 'revenue'=>0);
                    $country_sum[$country]['count'] += $value['count'];
                    $country_sum[$country]['revenue'] += $value['revenue_value'];
                ?>
            <?php endforeach; ?>
        <?php endforeach; ?>

这太容易了。。。只需在阵列上循环创建一个新的

foreach ($array as $sub) {
  foreach ($sub as $countryName => $data) {
    if (!isset($result[$countryName])) {
       $result[$countryName] = ['count' => 0, 'revenue_value' => 0];
    }
    $result[$countryName]['count'] += $data['count'];
    $result[$countryName]['revenue_value'] += $data['revenue_value'];
  }
}