函数通过引用或变量,在什么时候使用?

时间:2011-06-17 15:16:41

标签: php variables reference scope

好吧,我在我的方便的PHP书中读到,能够区分参考和变量参数非常重要。该书说,当变量发生变化时,参数化变量的原始值会被保留,参数化参考的原始值会在参考变化时发生变化。它说这是关键的区别,如果我正确的话。

好吧,我想知道每一个比另一个更有用。在创建自己的函数时,如何知道何时使用变量以及何时使用引用?

2 个答案:

答案 0 :(得分:3)

这很简单。当您需要修改传递给函数的变量的值时,请使用引用。当您不需要或想要修改该值时使用变量。

因此,例如,如果您正在编写一个接受数组并更改该数组的函数,那么最好使用该数组的引用,而不是从该函数返回一个新数组。

答案 1 :(得分:2)

“引用”(变量别名)使您的代码更难理解,并且可能成为难以理解的错误的来源。没有正当理由在php中使用引用并且在更安全的一方尝试完全避免它们。

不,php5中的对象与“引用”无关。

在PHP中实现的“引用”是一个奇怪的概念。通常,在编程语言中,变量彼此独立,因此更改一个变量不会影响其他变量。 Php“引用”允许多个变量共享相同的值并且彼此依赖。基本上,你改变了一个变量,突然另一个你认为完全不相关的变量也在变化。这不是好事,经常导致很多混乱。

php中的对象(我需要添加'five'吗?)与上述意义上的“引用”无关。它们的行为与C指针非常相似(实际上,这就是它们在引擎盖下) - 当你将一个对象传递给一个函数时,你实际上传递了一个指针,并且该函数可以使用这个指针来操纵对象内容,但是没有函数改变传递变量本身的方式,例如,使其指向另一个对象。

这个“对象是引用”的误解可能是因为人们将php“引用”(&符号语法)与generic CS term混淆,后者也适用于指针,句柄等。