我需要在PHP中合并数组的帮助,我有这个数组,我正在尝试通过模型对项进行分组,并从年份合并min和最大值
[0] => Array
(
[brand] => SUZUKI
[model] => GSF 1250 Bandit
[year] => 2006
)
[1] => Array
(
[brand] => SUZUKI
[model] => GSF 1250 Bandit
[year] => 2007
)
[2] => Array
(
[brand] => SUZUKI
[model] => GSF 1250 Bandit
[year] => 2008
)
[3] => Array
(
[brand] => SUZUKI
[model] => GSX 1250FA
[year] => 2011
)
[4] => Array
(
[brand] => SUZUKI
[model] => GSX 1250FA
[year] => 2012
)
[5] => Array
(
[brand] => SUZUKI
[model] => GSR 600
[year] => 2006
)
[6] => Array
(
[brand] => SUZUKI
[model] => GSR 600
[year] => 2007
)
[7] => Array
(
[brand] => SUZUKI
[model] => GSR 600
[year] => 2008
)我希望通过模型对项进行分组,并合并中的min和max值,如下所示:
[0] => Array
(
[brand] => SUZUKI
[model] => GSF 1250 Bandit
[year] => 2006 - 2008
)
[1] => Array
(
[brand] => SUZUKI
[model] => GSX 1250FA
[year] => 2011 - 2012
)
[2] => Array
(
[brand] => SUZUKI
[model] => GSR 600
[year] => 2006 -2008
)我知道如何按模型对项进行分组,但无法实现合并年份:
foreach($array as $row){
$newArray[$row["model"]] = array(
"brand" => $row["brand"],
"model" => $row["model"],
"year" => $row["year"]
);
}谢谢你的帮助。
发布于 2021-05-13 09:14:17
这将它分为两个阶段,首先为每个项目收集一分钟和最长年的数据。当设置min和max时,它检查前面的值(如果找不到缺省值),并应用适当的min()或max().
$newArray = [];
foreach($array as $row){
$newArray[$row["model"]] = array(
"brand" => $row["brand"],
"model" => $row["model"],
"minyear" => min($newArray[$row["model"]]["minyear"] ?? PHP_INT_MAX, $row["year"]),
"maxyear" => max($newArray[$row["model"]]["maxyear"] ?? PHP_INT_MIN, $row["year"]),
);
}这会产生..。
Array
(
[GSF 1250 Bandit] => Array
(
[brand] => SUZUKI
[model] => GSF 1250 Bandit
[minyear] => 2006
[maxyear] => 2008
)
[GSX 1250FA] => Array
(
[brand] => SUZUKI
[model] => GSX 1250FA
[minyear] => 2011
[maxyear] => 2012
)
)然后,您可以处理它以提供所需格式的年份(删除不再使用的字段).
foreach ( $newArray as &$row ) {
$row['year'] = $row['minyear'] . " - ". $row['maxyear'];
unset ( $row['minyear'], $row['maxyear'] );
}会产生..。
Array
(
[GSF 1250 Bandit] => Array
(
[brand] => SUZUKI
[model] => GSF 1250 Bandit
[year] => 2006 - 2008
)
[GSX 1250FA] => Array
(
[brand] => SUZUKI
[model] => GSX 1250FA
[year] => 2011 - 2012
)
)https://stackoverflow.com/questions/67516469
复制相似问题