2017-06-09 150 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!