2017-06-09 117 views
1

想象我有一个包含下列值的数组:如何比较两个阵列以填充第三个阵列?

$indexes = [ 'Hello' , 'Hoi', 'Ola' , 'Shalom' , 'Salaam']; 

而且我也有一个完整的数组:

$values = ['Hello' => 2, 'Ola' => 20 ]; 

如何合并这些阵列以获得显示与他们的价值观所有索引结果,没有找到值时为0?

$desiredResult = [ 
'Hello' => 2, 
'Hoi' => 0, 
'Ola' => 20 , 
'Shalom' => 0, 
'Salaam' => 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) 
} 
0

你要找的功能是array_combine其工作方式
array_combine($indexes, $values)

2

您可以使用array_merge和array_combine,live demo

$disiredResult = array_merge(
    array_combine($indexes, array_fill(0, count($indexes), 0)), $values 
); 
3

您可以使用内置函数(请参阅其他答案),但您当然也可以循环自己。

function addKeys(&$arr, $keys, $value = 0) { 
    foreach ($keys as $key) { 
    if (!array_key_exists($key, $arr)) { 
     $arr[$key] = $value; 
    } 
    } 
    return $arr; 
} 

Try it online!