PHP中可变范围的问题

时间:2014-05-30 11:29:01

标签: php

我刚刚编写了一个程序来检查PHP中的变量作用域。代码如下:

<?php
$value = 1;
function change_value(){
    if(some_condition){
        $value = 0;
        $asset = 1;
    }else{
        $asset = 0;
    }
    return $asset;
}
echo $value;
change_value();
echo $value;
?>

现在,上述程序的输出为11。 如果$value进入函数change_value()

,我如何更改{{1}}的值

2 个答案:

答案 0 :(得分:2)

传递参数by reference

<?php
$value = 1;
function change_value(&$value){
    if(/* some_condition */){
        $value = 0;
        $asset = 1;
    }else{
        $asset = 0;
    }
    return $asset;
}
echo $value; // echoes 1
$asset = change_value($value);
echo $value; // echoes 0
echo $asset; // echoes 0 or 1 depending on /* some_condition */
?>

即使有人提出建议,也请不要使用global ...。 这很糟糕。它让变量可以从整个脚本中访问,当你遇到你在其中包含的不同脚本中访问$value的情况时你会感到非常困惑,然后它会有不同的行为...... < / p>

答案 1 :(得分:-1)

你要做的是违背共同原则,但是。

$GLOBALS['value'] = 0;

使用这个内部函数可以让你改变那个值,但我建议你不要这样做。

其他人概述的方式更为正确。