PHP可以在这里赋值NULL吗?

PHP可以在这里赋值NULL吗?,php,Php,例如: public function prepare($sql, &$p = NULL) { p通过引用赋值。我不确定是否可以在这里安全地将NULL指定为默认值。在这种情况下可以吗?编译它并查看:) 如果函数可以在$p为NULL的情况下正常工作,那么您就不会有任何问题。为什么要为通过引用传递的参数设置默认值?通过引用传递的基本点不是可以更改调用方范围中的原始变量吗?因此,如果它有一个默认值,那么您不会更改调用方作用域中的任何内容,那么这有什么意义呢?即使错误报告设置为E_ALL&E_

例如:

public function prepare($sql, &$p = NULL) {
p通过引用赋值。我不确定是否可以在这里安全地将NULL指定为默认值。在这种情况下可以吗?

编译它并查看:)


如果函数可以在$p为NULL的情况下正常工作,那么您就不会有任何问题。

为什么要为通过引用传递的参数设置默认值?通过引用传递的基本点不是可以更改调用方范围中的原始变量吗?因此,如果它有一个默认值,那么您不会更改调用方作用域中的任何内容,那么这有什么意义呢?

即使错误报告设置为E_ALL&E_STRICT,代码也会运行得非常好


对于默认值为null的整个pass-by-reference,我只是将其视为可选变量,这没关系。您应该明确地问自己是否真的需要引用,因为php在为您处理此类内容方面非常聪明

在警告级别E_STRICT中,Matchu在某些情况下使用
NULL
可以发出警告,我相信。Ooh。每天学习新事物。谢谢哦。。。如何编译PHP?:)通常通过键入php nameofscript.php-这将编译并执行它。。。(无论如何,对于PHP4.0以后的版本)如果NULL有问题,那么它将是一个运行时错误,并且在编译过程中不会出现。@mopoke,对不起,我只是在开玩笑。PHP是一种解释语言,永远无法真正“编译”。脚本在执行之前被编译成某种字节码(字节码,例如apc正在缓存)。@Doug:我知道。我有点像。但是PHP是在执行之前编译的。PHP3及以下版本使用了解释的。PHP4及以上版本都是编译的。关键是,这个变量是可选的,不是吗?因此,如果未提供,则默认值适用。否则就没有意义了,因为变量总是空的。至少我是这么想的。