在PHP中将两个数组中的多个值转换为一个键

原学程将引见在PHP中将二个数组中的多个值转换为1个键的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

在PHP中将两个数组中的多个值转换为一个键 教程 第1张

成绩描写

我想用ARRAY_COMBINE组开二个数组。我愿望Array一的值是我的键,Array二的值是我的值。
这些值去自.yml文件,该文件以ComponentGroup为症结字,以ComponentName为值

$yamlKeys = array();
 foreach ($yaml['components'] as $yamlComponent) {
  array_push($yamlKeys, $yamlComponent['cachet']['componentgroup']);
 }

 $yamlValues = array();
 foreach ($yaml['components'] as $yamlComponent) {
  array_push($yamlValues, $yamlComponent['cachet']['componentname']);
 }

 $yamlMap = array();
 $yamlMap = array_combine($yamlKeys, $yamlValues);

 echo("===== YAML MAP STARTS =====");
 var_dump($yamlMap);
 echo("===== YAML MAP ENDS =====");

我的成绩:
不妨有同名的稀钥。
在$yamlMap中,将只分派1个值(最初1个)。比方:

YAML文件以下所示:

FOO => BAR
Key一 => Value一
Key二 => Value二
FOO => BAZ
Key三 => Value三

我的代码:

FOO => BAZ
Key一 => Value一
Key二 => Value二
Key三 => Value三

但是我愿望是如许的:

FOO => BAR, BAZ
Key一 => Value一
Key二 => Value二
Key三 => Value三

更精确天说:假如有更多的"foo"键,我愿望"foo"有更多的值(能够是值的数组)。

有甚么设法主意吗?感谢。

推举谜底

$yamlMap = [];
foreach ($yaml['components'] as $yamlComponent) {
 $key = $yamlComponent['cachet']['componentgroup'];
 $value = $yamlComponent['cachet']['componentname'];
 // Lets initialize the key to be an array so that we may collect multiple values
 if(!array_key_exists($key, $yamlMap)) {
  $yamlMap[$key] = [];
 }
 // lets add the value to the map under the key
 $yamlMap[$key][] = $value;
}

佳了闭于在PHP中将二个数组中的多个值转换为1个键的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。