2016-06-28 4 views
1

の数値キーを$aKeyNamesに保存されているテキストの同等物に置き換えたいと思います。他の配列の値を使ってすべての配列キーを更新する

$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

なぜこれがダウンリストされたのか不思議です。私が見ることができる唯一の違いは、OPのコードは2つの配列に制限されており、使用された値はループ内で設定されていないということです。メモリ占有量を削減できますか? – jeroen

関連する問題