在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我怀疑这是否有意义,但我可能错了。也许你可以运行一些基准测试。如果你有一个数据处理算法,它被称为很多,那么我打赌它会有意义。或者如果数组真的很大。