【发布时间】:2012-03-15 17:06:50
【问题描述】:
我需要使用相同的$search 和$replace 执行许多str_replace($search, $replace, $input)。这些被分解成一个函数:
function sr($input) {
$search = explode(",","s1,s2,s3,....");
$replace = explode(",","r1,r2,r3,...");
return str_replace($search, $replace, $input);
}
效率不高。从另一个 SO question,我看到我可以创建常量数组,但建议的方法意味着序列化。我敢打赌这也不是很有效,但我说的对吗?
我有一种编译语言思维方式,所以每当我可以使某些东西保持不变时,我就会很高兴。但它在 PHP 中有意义吗?我不是 PHP 专家。
更准确的说,知道这个功能会在用户对页面进行web请求时使用,我如何才能有效地优化爆炸? PHP中有预编译代码之类的东西吗?或者我可以一次有效地定义常量数组吗(比如测试常量是否已经在上下文中创建/可用)?
更新
考虑到Truth的建议,我们可以将函数修改如下:
function sr($input) {
$search = array("s1","s2","s3",....");
$replace = array("r1","r2","r3",...");
return str_replace($search, $replace, $input);
}
剩下的问题是:在每次调用时声明这些数组是否最佳,或者我们是否应该尝试在上下文中将它们创建为常量?
【问题讨论】:
-
有PHP编译器,但不是所有的PHP脚本都能编译。
-
我看不出爆炸的意义。为什么不直接设置
$search = array("s1", "s2", "s3", ....);? -
@Truth 是的,你说得有道理,我只是缺乏 PHP 经验。我正在更新我的问题
-
您可以为此目的使用
static关键字,但我有任何信息,如果它会影响性能。
标签: php arrays optimization constants