php官方文档描述:如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
<?php
function foo(&$bar) {
unset($bar);
$bar = "blah";
}
$bar = 'something';
echo "$bar\n";
foo($bar);
echo "$bar\n";
?>
以上代码输出:
something
something
继续测试:
<?php
$cars=array("Volvo","BMW","Toyota");
function foo(&$cars) {
unset($cars[0]);
print_r($cars);
echo "<br>";
}
print_r($cars);
echo "<br>";
foo($cars);
print_r($cars);
echo "<br>";
?>
以上代码输出:
output:
Array
(
[0] => Volvo
[1] => BMW
[2] => Toyota
)
Array
(
[1] => BMW
[2] => Toyota
)
Array
(
[1] => BMW
[2] => Toyota
)
同样时函数内调用unset(),同样时引用传递,为啥这次就改变了全局变量?