全局变量vs函数中的引用传递(php)

时间:2015-07-09 08:41:18

标签: php

有什么更好,为什么?

1) - 什么变体:全局变量vs通过引用传递

/* 1 example */
$val = 1;
function add1(){
    global $val;
    $val++;
}
add1();
var_dump($val);

/* 2 example */
$val = 1;
function add2(&$val){
    $val++;
}
add2($val);
var_dump($val);

2) - 什么变体:*“返回”与传递参考

/* 3 example */
$val = 1;
function add3(&$val){
    $val++;
}
add3($val);
var_dump($val);

/* 4 example */
$val = 1;
function add4($val){
    $val++;
    return $val;
}
$val = add4($val);
var_dump($val);

1 个答案:

答案 0 :(得分:1)

这总取决于你打算做什么。

但通常示例2比1好得多。 函数不应该修改全局变量, 它被称为副作用,很难控制。 对代码读者来说,参考ich的调用更加明确。

第二部分也一样,例4更好, 因为你可以将add4()函数与任何变量一起使用。