我有一个数组将以下内容从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。如果更大,请更换它;如果不是,请更换-保留新阵列中已经存在的那个。
这里是您想要的有效示例代码
$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
)
)