用另一个数组重写数组的键

时间:2012-11-20 17:09:25

标签: php arrays sorting

我想用字符串键重写数组“foo”的数字键。关系保存在另一个数组“bar”中。

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

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

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

实现此结果的最快方法是什么?

2 个答案:

答案 0 :(得分:7)

使用array_combine功能:

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

print_r($combined);给出了

Array
(
    [abc] => foo
    [xyz] => bar
)

答案 1 :(得分: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];
}