3

配列「foo」の数値キーを文字列キーで書き直したい。リレーションは別の配列「バー」に保存されます。

$foo = array(
 1 => 'foo',
 2 => 'bar',
 ...
);

$bar = array(
 1 => 'abc',
 2 => 'xyz',
 ...
);

$result = array(
 'abc' => 'foo',
 'xyz' => 'bar',
 ...
);

この結果を達成するための最速の方法は何ですか?

4

2 に答える 2

7

使用array_combine機能:

$combined = array_combine($bar, $foo);

print_r($combined);与える

Array
(
    [abc] => foo
    [xyz] => bar
)
于 2012-11-20T17:10:55.267 に答える
1

両方の配列 ($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];
}
于 2012-11-20T17:15:23.037 に答える