1 回答
TA贡献1863条经验 获得超2个赞
不,你不必须使用循环进行更换,但PHP是将“迭代”的阵列不管什么语法,你使用。
Regex 提供了更简洁的代码,但如果您想要更好的性能,strtr()循环内部很可能会执行得更快。
我将$array在我的片段中声明您的输入数据。下面的两个示例都将提供以下输出:
array (
'item1' => 'red',
'item2' => 'blueJohn',
'item3' => 'green',
'item4' => 'whiteCalifornia',
'item5' => 'blaColack',
'item6' => 'yellowJohn',
)
循环strtr():(演示)
$translations = [
'#foo#' => 'John',
'#foo2#' => 'California',
'#foo3#' => 'Cola',
];
foreach ($array as &$item) { // modify values by reference with & symbol
$item = strtr($item, $translations); // translate placeholder to desired substring from lookup array
}
var_export($array);
preg_replace(): ( Demo ) *通知模式定界符被添加到查找数组中
$translations = [
'~#foo#~' => 'John',
'~#foo2#~' => 'California',
'~#foo3#~' => 'Cola',
];
var_export(preg_replace(array_keys($translations), $translations, $array));
ps 如果您不知道如何生成您的$list,那么我无法理解您将如何知道如何将特定占位符转换为适当的值。我假设您有足够的项目逻辑知识来编写适当的翻译/查找数组。
- 1 回答
- 0 关注
- 174 浏览
添加回答
举报