1

在 PHP 中,我经常做大量的字符串操作。是否可以将我的代码拆分为多个函数,因为如果像字符串这样的原始类型按值传递,我会显着影响性能。

4

5 回答 5

7

只有对象通过引用传递。

但这并不意味着您可以通过更改引用来提高性能 - PHP 使用写时复制,因此只有在您修改变量时才会进行复制。

从这个角度来看,将代码拆分为函数不会减慢速度。调用函数的开销很小,但除非您在循环中调用 10,000 个函数,否则您可能不需要担心。

于 2009-07-08T12:42:09.450 回答
2

对象通过引用传递。除非您使用& 运算符明确使用传递引用,否则所有其他内容都是按值传递的。

话虽如此,PHP 还使用时复制来避免不必要的复制。

于 2009-07-08T12:42:11.383 回答
1

是的,基元是按值传递的,除非您明确定义要通过引用传递的函数(通过&在参数前面使用 & 号)或在参数前面使用 & 号调用函数。(后者已弃用)

有关更多信息,请参阅文档的这一部分

编辑

此外,PHP 中“对象通过引用传递”的声明有点简化,尽管在大多数情况下通常可以这样认为。文档的这一解释了这些差异。

于 2009-07-08T12:42:19.917 回答
1

默认情况下,所有内容都按值传递。如果您想通过引用传递某些内容,则必须明确说明。

这是明确说明此行为的 php 文档

于 2009-07-08T12:43:52.663 回答
1

在 PHP 中,按引用传递实际上比按值传递要慢。我找不到此声明的正确引用;它位于 PHP 手册的“参考”部分。

于 2009-07-08T12:45:55.910 回答