【问题标题】:I want to group the cars by their type in this associative array.- PHP [duplicate]我想在这个关联数组中按类型对汽车进行分组。- PHP [重复]
【发布时间】:2019-04-04 20:37:05
【问题描述】:

我只想把这个数组分组:

["2019 Honda Civic" => "Sedan", 
 "Maruti Suzuki Baleno" => "Hatchback",  
 "Rolls-Royce Phantom" => "Sedan"]

到这里

["Sedan" => ["2019 Honda Civic", "Rolls-Royce Phantom"], 
 "Hatchback" => ["Maruti Suzuki Baleno"]]
<?php
function groupByType($cars) {
       return; 
}

$cars= ["2019 Honda Civic" => "Sedan", "Maruti Suzuki Baleno" => "Hatchback",  "Rolls-Royce Phantom" => "Sedan"];
$groups = groupByType($cars);
var_dump($groups);

【问题讨论】:

  • 这需要更多代码function groupByType($cars) { return; }
  • 数组首先是如何生成的?

标签: php arrays


【解决方案1】:

可能array_* 函数的组合也可以实现此目的,但您可以循环数组并翻转值 - 按旧值(新键)分组,如下所示。

$result = [];
foreach ($array as $k=>$v) {
    if (!isset($result[$v]))
        $result[$v] = [$k];
    else 
        $result[$v][] = $k;
}
return $result;

【讨论】:

  • 它工作正常,但有点乱,但我会尝试调整它。
【解决方案2】:

您可以使用array_flip() 轻松翻转您的阵列,然后做一些整理工作。 在此处查看演示:https://eval.in/1091512

$cars= ["2019 Honda Civic" => "Sedan", "Maruti Suzuki Baleno" => "Hatchback",  "Rolls-Royce Phantom" => "Sedan"];

$groups = array_flip($cars);

foreach ($groups as $g => $c)
    $groups[$g] = implode(", ", array_keys($cars, $g));

【讨论】:

  • 这会创建一个字符串数组而不是数组数组。
猜你喜欢
  • 2011-06-01
  • 2021-08-04
  • 2018-12-31
  • 2012-07-19
  • 1970-01-01
  • 2010-10-21
  • 2014-05-22
  • 2018-04-25
  • 1970-01-01
相关资源
最近更新 更多