在PHP中,我经常进行大量的字符串操作。将我的代码拆分成多个函数是否可以,因为如果像字符串这样的原始类型按值传递,那么我将显着影响性能。
答案 0 :(得分:7)
只有对象通过引用传递。
这并不意味着你可以通过更改为引用来提高性能 - PHP使用copy-on-write,因此只有在修改变量时才会进行复制。
将代码拆分为函数不会从这个角度减慢速度。 调用函数的开销很小,但除非你在循环中调用10,000个函数,否则你可能不需要担心。
答案 1 :(得分:2)
通过引用传递对象。除非您明确使用pass-by-reference with the & operator,否则其他所有内容都会按值传递。
话虽如此,PHP还使用copy-on-write来避免不必要的复制。
答案 2 :(得分:1)
是的,原语按值传递,除非您明确定义要通过引用传递的函数(通过在参数前面使用&符号&
)或在参数前面调用带符号的函数。 (后者已被弃用)
有关详情,请参阅this part of the documentation。
修改
此外,PHP中“通过引用传递对象”的语句有点简化,尽管通常可以将其视为大多数用途。这个chapter of the documentation解释了这些差异。
答案 3 :(得分:1)
默认情况下,所有内容都按值传递。如果你想通过引用传递一些东西,你必须明确地说明它。
答案 4 :(得分:1)
通过引用传递实际上比在PHP中传递值慢。我找不到这个说法的正确引用;它位于PHP手册的“参考”部分。