在PHP中用$ replacementments键/值映射替换数组值

时间:2018-03-19 00:20:24

标签: php

我有一个(关联)数据数组$data包含值,另一个关联数组$replacements

我正在寻找一种简短,快捷的方法来使用$data数组替换$replacements中的值。

冗长的方式是:

function replace_array_values(array $data, array $replacements) {
  $result = [];
  foreach ($data as $k => $value) {
    if (array_key_exists($value, $replacements)) {
      $value = $replacements[$value];
    }
    $result[$k] = $value;
  }
  return $result;
}

有原生方式吗?

我知道array_map(),但也许有更快的东西,没有额外的函数调用每个项目?

实施例

请参阅https://3v4l.org/g0sIJ

$data = array(
  'a' => 'A',
  'b' => 'B',
  'c' => 'C',
  'd' => 'D',
);

$replacements = array(
  'B' => '(B)',
  'D' => '(D)',
);

$expected_result = array(
  'a' => 'A',
  'b' => '(B)',
  'c' => 'C',
  'd' => '(D)',
);

assert($expected_result === replace_array_values($data, $replacements));

2 个答案:

答案 0 :(得分:2)

我能想到的最简单/最简洁的方式:

return array_map(function($value) use ($replacements) {
  return array_key_exists($value, $replacements) ? $replacements[$value] : $value;
}, $data);

使用array_map基本上只是循环遍历数组,任何其他基本函数也必须这样做。

答案 1 :(得分:0)

您可以尝试array_replace