2016-06-28 59 views
1

我想用存儲在$aKeyNames中的文本等效替換$aValues中的所有數字鍵。使用另一個陣列中的值更新所有陣列鍵

$aKeyNames = array(0 => 'foo', 1 => 'bar'); 
$aValues = array(0 => 'foo content', 1 => 'bar content'); 

期望的輸出;

$aValues = array('foo' => 'foo content', 'bar' => 'bar content'); 

爲了達到這個目的,我寫了下面的工作代碼;

foreach ($aValues as $iPos => $aValue) { 
    $aValues[ $aKeyNames[$iPos] ] = $aValue; 
    unset($aValues[$iPos]); 
} 

我的問題是,$aValues是非常大的。有沒有更有效的方法來實現這一目標?

+2

您的解決方案似乎不錯,因爲你要替換由其他陣列中的同一個鍵的值的關鍵。你可以使用'array_combine()',但你必須確保兩個數組排序相同,所以鍵的順序是一樣的。 – Rizier123

+0

如果兩個數組中都有相同的鍵,array_combine就是最好的方法。看看http://php.net/manual/en/function.array-combine.php –

+0

謝謝你的評論,我剛剛意識到我發佈的錯誤,我只是在更新的問題上工作 – atoms

回答

2

參考手冊array_combine

print_r(array_combine($aKeyNames, $aValues)); 
+2

沉默donwvoter。 –

+2

我想知道爲什麼這是被投票的,因爲它似乎完全是OP所要求的?沒有任何評論就沒有任何幫助。 –

+1

我很好奇爲什麼這是downvoted。唯一的區別是我可以看到,OP的代碼被限制爲2個數組,並且使用的值在循環中未被設置。更低的內存佔用? – jeroen