PHP实现函数内修改外部变量值的方法示例
1. 问题的来源
在PHP中,function默认是不会改变到外部参数的值的。通常函数的参数是一份拷贝而不是一个指针。如果你要修改外部变量,你要么使用指针,要么使用全局变量。
2. 使用全局变量
2.1 带全局变量参数
通过在函数内部将变量定义为全局变量,就可以在函数外部访问到该变量了。示例如下:
$temperature = 0.6;
function changeTemperature() {
global $temperature;
$temperature = 0.8;
}
changeTemperature();
echo $temperature; // 输出0.8
从运行结果可以看出,原来的$temperature变量值被成功修改。
2.2 使用$GLOBALS变量
$GLOBALS在PHP中是一个超全局变量,可以在函数的任何地方访问。它是一个关联数组,使用变量名作为键名,值是变量的值。在函数内部通过全局$名称构建一个$GLOBALS数组,则可以直接修改外部变量。示例如下:
$temperature = 0.6;
function changeTemperature() {
$GLOBALS['temperature'] = 0.8;
}
changeTemperature();
echo $temperature; // 输出0.8
3. 使用引用传递
在函数内部,直接将变量作为引用传递进去,就可以修改外部变量了。示例如下:
$temperature = 0.6;
function changeTemperature(&$temp) {
$temp = 0.8;
}
changeTemperature($temperature);
echo $temperature; // 输出0.8
4. 使用类及其方法
可以使用类及其方法的方式实现函数内修改外部变量。示例如下:
class Temperature {
private $value;
public function __construct($value) {
$this->value = $value;
}
public function getValue() {
return $this->value;
}
public function setValue($value) {
$this->value = $value;
}
}
$temp = new Temperature(0.6);
function changeTemperature($temp) {
$temp->setValue(0.8);
}
changeTemperature($temp);
echo $temp->getValue(); // 输出0.8
5. 总结
PHP中要实现函数内修改外部变量值,有多种方式可供选择,包括使用全局变量、使用$GLOBALS变量、使用引用传递、使用类及其方法等。具体方法的选择取决于具体业务场景及代码架构。