PHP - 使用全局vs通过引用传递

时间:2017-10-29 20:21:51

标签: php variables reference global

使用全局变量和通过引用传递param之间是否有任何实际区别?

简单示例:

$my_var = 5;
$my_var2 = 3;

function add_one(&$i){
    return $i++;
}

function add_one_global(){
    global $my_var2;
    return $my_var2++;
}    

add_one($my_var);
echo "$my_var<br>";

add_one_global();
echo "$my_var2";

输出结果为:

6
4

它们都修改了全局变量(意识到应该尽可能避免),“add_one”似乎更灵活一点,但除此之外还有其他区别吗? / p>

2 个答案:

答案 0 :(得分:0)

不是,没有区别。你期待什么样的差异?唯一真正的区别是你自己注意到的那个 - 传递引用更灵活,不会污染全局命名空间。

如果这是一个小的一次性脚本,您需要运行一次然后丢弃,请选择最适合您的。

如果这是为了保持工作一段时间,请选择传递引用。当您需要对脚本进行一些修改时,这将会变得更加容易(这是,而不是如果)。

答案 1 :(得分:-2)

  • 函数不应该修改全局变量,它被称为副作用,很难控制。对代码读者来说,参考ich的调用更加明确。 *