Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中用$replacements键/值映射替换数组值_Php - Fatal编程技术网

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

在PHP中用$replacements键/值映射替换数组值,php,Php,我有一个带值的(关联)数据数组$data,另一个关联数组$replacements 我正在寻找一种使用$replacements数组替换$data中的值的简单、快捷的方法 详细的方式是: function replace_array_values(array $data, array $replacements) { $result = []; foreach ($data as $k => $value) { if (array_key_exists($value, $r

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

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

详细的方式是:

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\u map()
,但也许有更快的方法,而不需要对每个项进行额外的函数调用

例子: 看


你可以尝试一下

你可以尝试一下

我能想到的最简单/最不冗长的方式:

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

使用
array\u map
基本上只是在数组上循环,任何其他基函数都必须这样做。

我能想到的最简单/最不冗长的方法是:

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

使用
array\u map
基本上只是在数组上循环,任何其他基函数也必须这样做。

array\u replace
根据索引替换值,OP希望根据值替换值(除非我误解)。
array\u replace
根据索引替换值,OP希望根据它们的值来替换它们(除非我误解了)。能否显示一个示例
$data
$replacements
和预期输出?能否显示一个示例
$data
$replacements
和预期输出?
数组_map()
为每次迭代调用一个函数,这会增加一些开销(会很好奇有多少)。虽然这仍然是一个正确的答案。@donquixote我怀疑这是否有意义,但我可能错了。也许你可以运行一些基准测试。如果你有一个数据处理算法,它被称为很多,那么我打赌它会有意义。或者如果数组真的很大。
array\u map()
为每次迭代调用一个函数,这会增加一些开销(很好奇会增加多少)。虽然这仍然是一个正确的答案。@donquixote我怀疑这是否有意义,但我可能错了。也许你可以运行一些基准测试。如果你有一个数据处理算法,它被称为很多,那么我打赌它会有意义。或者如果数组真的很大。