我刚刚编写了一个程序来检查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()
?
答案 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;
使用这个内部函数可以让你改变那个值,但我建议你不要这样做。
其他人概述的方式更为正确。