我需要在PHP中具有重复的区号键的数组中找到区号的最大数量

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

我有一个数组将以下内容从CSV文件中拉出

$results[] = array(
                    'areaCode' => $areaCode,
                    'city' => $data[$headers['name']],
                    'state' => $data[$headers['state_code']],
                    'population' => $data[$headers['population']],
                );

[$ areaCode具有多个实例。我需要提取人口最多的每个$ areaCode的实例,并将其推入新数组中。例如,如果我在数组中有两个具有$ areaCode => 206的元素,而三个具有$ areaCode => 253的元素,那么我的新数组应具有一个206和253实例,且其总体总数最大,而其他实例将保留在原始实例中数组。

我需要遍历原始数组(foreach)中的每个元素,并查看$ areaCode是否首先存在于新数组中。如果没有,那么我将把$ areaCode的第一个实例放入新数组中。如果是这样,我将需要检查该areaCode的$ maxPopulation是否大于新数组中已有的$ maxPopulation。如果更大,请更换它;如果不是,请更换-保留新阵列中已经存在的那个。

php arrays symfony
1个回答
0
投票

这里是您想要的有效示例代码


$results[] = array(
    'areaCode' => 206,
    'city' => 'Jaipur',
    'state' => 'Rajasthan',
    'population' => '1000',
);
$results[] = array(
    'areaCode' => 206,
    'city' => 'Jaipur',
    'state' => 'Rajasthan',
    'population' => '2000',
);
$results[] = array(
    'areaCode' => 253,
    'city' => 'New Delhi',
    'state' => 'Delhi',
    'population' => '100',
);
$results[] = array(
    'areaCode' => 253,
    'city' => 'New Delhi',
    'state' => 'Delhi',
    'population' => '50',
);
$results[] = array(
    'areaCode' => 201,
    'city' => 'Amritsar',
    'state' => 'Punjab',
    'population' => '500',
);

//code of your interest 
$final = [];

foreach($results as $result) {
    if(isset($final[$result['areaCode']]) && $final[$result['areaCode']]['population'] < $result['population']) {
        $final[$result['areaCode']]  = $result;
    } else {
        $final[$result['areaCode']]  = $result;
    }
}

print_r($final);

预期输出:

Array
(
    [206] => Array
        (
            [areaCode] => 206
            [city] => Jaipur
            [state] => Rajasthan
            [population] => 2000
        )

    [253] => Array
        (
            [areaCode] => 253
            [city] => New Delhi
            [state] => Delhi
            [population] => 50
        )

    [201] => Array
        (
            [areaCode] => 201
            [city] => Amritsar
            [state] => Punjab
            [population] => 500
        )

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