【发布时间】:2018-07-24 13:27:37
【问题描述】:
我想将 2 个数组与 array_combine 结合起来。我希望 Array1 的值是我的键,而 Array2 的值是我的值。 这些值来自一个 .yml 文件,其中 componentgroup 作为 Key,componentname 作为 Value
$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 中只会分配一个值(最后一个)。例如:
Yaml 文件如下所示:
FOO => BAR
Key1 => Value1
Key2 => Value2
FOO => BAZ
Key3 => Value3
我的代码可以:
FOO => BAZ
Key1 => Value1
Key2 => Value2
Key3 => Value3
但我想要这样:
FOO => BAR, BAZ
Key1 => Value1
Key2 => Value2
Key3 => Value3
更准确地说:如果有更多“FOO”键,我希望“FOO”有更多值(可能是一个值数组)。
有什么想法吗?谢谢。
【问题讨论】:
-
在您的输出中,您想要一个逗号分隔的字符串
'BAR, BAZ'还是一个包含两个元素['BAR', 'BAZ']的数组?您希望Value1是一个字符串还是包含一个字符串的数组?由于您接受了答案,我觉得您的问题不清楚。 -
我写了“如果有更多的“FOO”键,我希望“FOO”有更多的值(可能是一个值数组)。所以是的,我希望该值是一个数组。抱歉表达不清楚。
-
您希望 Key1 指向一个字符串还是包含单个字符串的数组?你表达的输出不清楚。
-
如果它是一个带有字符串 value1 的数组,那么我同意,问题不清楚。此外,无论是否使用 if() 部分,接受的答案都会给出完全相同的输出
-
这不是问题所在。在您的示例中,
Key1 => Value1是什么。它是一个字符串还是一个数组。例如["key1" => "value1"]或["key1" => ["value1"]]这是一个很大的区别。我个人更喜欢选项 2,因为它始终是相同的数组结构。但你的问题是选项 1
标签: php arrays dictionary key key-value