配列「foo」の数値キーを文字列キーで書き直したい。リレーションは別の配列「バー」に保存されます。
$foo = array(
1 => 'foo',
2 => 'bar',
...
);
$bar = array(
1 => 'abc',
2 => 'xyz',
...
);
$result = array(
'abc' => 'foo',
'xyz' => 'bar',
...
);
この結果を達成するための最速の方法は何ですか?
使用array_combine
機能:
$combined = array_combine($bar, $foo);
print_r($combined);
与える
Array
(
[abc] => foo
[xyz] => bar
)
両方の配列 ($foo と $bar) のキー/値の順序が異なる場合、NullPointer の例は失敗します。このことを考慮:
$foo = array(
1 => 'foo',
2 => 'bar',
);
$bar = array(
2 => 'xyz',
1 => 'abc',
);
以前のように実行array_combine($foo, $bar)
すると、出力は次のようになります
array(2) {
["foo"]=>
string(3) "xyz"
["bar"]=>
string(3) "abc"
}
ただし、この単純なループは機能するはずです。
$output = array();
foreach ($bar as $from => $to) {
$output[$to] = $foo[$from];
}