我有一个(关联)数据数组$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()
,但也许有更快的东西,没有额外的函数调用每个项目?
$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));
答案 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