首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按值&max划分的PHP数组组

按值&max划分的PHP数组组
EN

Stack Overflow用户
提问于 2021-05-13 08:52:29
回答 1查看 171关注 0票数 0

我需要在PHP中合并数组的帮助,我有这个数组,我正在尝试通过模型对项进行分组,并从年份合并min和最大值

代码语言:javascript
复制
[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值,如下所示:

代码语言:javascript
复制
[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
    )

我知道如何按模型对项进行分组,但无法实现合并年份:

代码语言:javascript
复制
foreach($array as $row){
    $newArray[$row["model"]] = array(
        "brand" => $row["brand"],
        "model" => $row["model"],
        "year" => $row["year"]
    );
}

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-13 09:14:17

这将它分为两个阶段,首先为每个项目收集一分钟和最长年的数据。当设置min和max时,它检查前面的值(如果找不到缺省值),并应用适当的min()max().

代码语言:javascript
复制
$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"]),
    );
}

这会产生..。

代码语言:javascript
复制
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
        )

)

然后,您可以处理它以提供所需格式的年份(删除不再使用的字段).

代码语言:javascript
复制
foreach ( $newArray as &$row )  {
    $row['year'] = $row['minyear'] . " - ". $row['maxyear'];
    unset ( $row['minyear'], $row['maxyear'] );
}

会产生..。

代码语言:javascript
复制
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
        )

)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67516469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档