我刚刚编写了一个程序来检查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()
,我如何更改它的值?
传递参数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
时,你会非常困惑,因为它的行为不同。。。
您试图做的事情违背了一般原则,但是。
$GLOBALS['value'] = 0;
使用这个内部函数可以更改该值,但我建议您不要这样做。
其他人概述的方式要正确得多。