想象一下,我有一个包含以下值的数组:
$indexes = [ 'Hello' , 'Hoi', 'Ola' , 'Shalom' , 'Salaam'];
此外,我还有一个不完整的数组:
$values = ['Hello' => 2, 'Ola' => 20 ];
如何合并这些数组以获得显示所有索引及其值的结果,如果没有找到值,则为0?
$desiredResult = [
'Hello' => 2,
'Hoi' => 0,
'Ola' => 20 ,
'Shalom' => 0,
'Salaam' => 0
]
答案 0 :(得分:4)
$indexes = [ 'Hello' , 'Hoi', 'Ola' , 'Shalom' , 'Salaam'];
$values = ['Hello' => 2, 'Ola' => 20 ];
$default = array_combine($indexes, array_fill(0, count($indexes), 0));
$result = array_replace($default, $values);
var_dump($result);
结果将是:
array(5) {
["Hello"]=>
int(2)
["Hoi"]=>
int(0)
["Ola"]=>
int(20)
["Shalom"]=>
int(0)
["Salaam"]=>
int(0)
}
答案 1 :(得分:3)
您可以使用内置函数(请参阅其他答案),但您当然也可以自行循环。
function addKeys(&$arr, $keys, $value = 0) {
foreach ($keys as $key) {
if (!array_key_exists($key, $arr)) {
$arr[$key] = $value;
}
}
return $arr;
}
答案 2 :(得分:2)
您可以使用array_merge和array_combine,live demo。
$disiredResult = array_merge(
array_combine($indexes, array_fill(0, count($indexes), 0)), $values
);
答案 3 :(得分:0)
您正在寻找的功能是array_combine
,其作用类似于array_combine($indexes, $values)