关联数组值可以是数组吗?

  • 本文关键字:数组 关联 php
  • 更新时间 :
  • 英文 :


这是一个我无法用php解决的简单问题。我想将第一个数组转换为这样的内容:["BMW"=>["g4","g3"], "Mercedes"=>["f1"]]

$array = ["F1" => "Mercedes", "g3"=>"BMW", "g4"=>"BMW"];
$newArray = [];
foreach($array as $key=>$value){
  if(!in_array($value, $newArray){
      $element = $value => [$key];
      array_push($newArray, $element);
  } else {
      array_push($newArray[$value],$key);
  }
}

第 6 行的$element = $value =>[];是我的直观解决方案,但无效。

我是否使用了糟糕的模式,这是不可取的吗?根据官方文件,"该值可以是任何类型的。

你可以简单地做 -

$array = ["F1" => "Mercedes", "g3"=>"BMW", "g4"=>"BMW"];
$newArray = [];
foreach($array as $key => $value) {
    $newArray[$value][] = $key;
}
print_r($newArray);

输出

Array
(
    [Mercedes] => Array
        (
            [0] => F1
        )
    [BMW] => Array
        (
            [0] => g3
            [1] => g4
        )
)

对于您期望的订单,请添加ksort($newArray);

输出将是 -

Array
(
    [BMW] => Array
        (
            [0] => g3
            [1] => g4
        )
    [Mercedes] => Array
        (
            [0] => F1
        )
)

ksort((

演示

试试这个。

<?php
$array = ["F1" => "Mercedes", "g3"=>"BMW", "g4"=>"BMW"];
$newArray = [];
foreach($array as $key=>$value){
$newArray[$value][]=$key;
}
echo "<pre>";
print_r($newArray);
exit;
?>

最新更新