数组的str_replace更快吗?

时间:2011-09-24 05:01:56

标签: php performance str-replace

我的问题是,如果在str_replace上使用数组比执行多次更快。我的问题只有两个替代。

使用数组

$phrase  = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables");
$yummy   = array("pizza", "beer");

$newphrase = str_replace($healthy, $yummy, $phrase);

每个搜索字一次

$phrase  = "You should eat fruits, vegetables, and fiber every day.";
$newphrase = str_replace("fruits", "pizza", $phrase);

$newphrase = str_replace("vegetables", "beer", $phrase);

3 个答案:

答案 0 :(得分:1)

来自PHP Docs上的str_replace

// Outputs F because A is replaced with B, then B is replaced with C, and so on...
// Finally E is replaced with F, because of left to right replacements.
$search  = array('A', 'B', 'C', 'D', 'E');
$replace = array('B', 'C', 'D', 'E', 'F');
$subject = 'A';
echo str_replace($search, $replace, $subject);

// Outputs: apearpearle pear
// For the same reason mentioned above
$letters = array('a', 'p');
$fruit   = array('apple', 'pear');
$text    = 'a p';
$output  = str_replace($letters, $fruit, $text);
echo $output;

查看这些示例,PHP正在为每个str_replace数组节点应用$search,因此两个示例在性能方面是相同的,但是确保使用数组进行搜索和替换更具可读性和future-prof,因为你可以在将来轻松改变阵列。

答案 1 :(得分:0)

我不知道它是否更快但我倾向于使用数组路径,因为它对我来说更易于维护和阅读...

$replace = array();
$replace['fruits']     = 'pizza';
$replace['vegetables'] = 'beer';

$new_str = str_replace(array_keys($replace), array_values($replace), $old_str);

如果我不得不猜测我会说对str_replace进行多次调用会比较慢,但我不确定str_replace的内部结构。对于这样的东西,我倾向于具有可读性/可维护性,因为优化的好处并不存在,因为根据替换次数,你可能只会得到0.0005秒左右的差异。

如果你真的想找出时差,那么在没有建立一个休息数据集的情况下几乎是不可能的,以便能够看到实际的时差与测试混淆的异常。

使用这样的东西......

$start = microtime(true);
// Your Code To Benchmark
echo (microtime(true) - $start) . "Seconds"

...将允许您为请求计时。

答案 2 :(得分:-1)

尝试在每种不同的方法之前和之后使用它,您很快就会看到是否存在速度差异:

echo microtime()