<?php
// function foo($var)
// {
// $var++;
// }
// $a=5;
// foo($a);
// $a is 5 here
// Bạn có thể truyền một biến bằng cách tham chiếu đến một hàm để hàm có thể sửa đổi biến đó. Cú pháp như sau:
// function foo(&$var)
// {
// $var++;
// }
// $a = 5;
// foo($a);
// $a is 6 here
class foo {
public $value = 42;
public function &getValue() {
return $this->value;
}
}
$obj = new foo;
$myValue = &$obj->getValue();
echo $myValue;
// $myValue is a reference to
$obj->value = 2;
echo $myValue; // prints the new value of $obj->value, i.e. 2.
?>
Một ví dụ quan trọng nữa.
Class
<?php
class A {
function foo(&$var) {
$this->result1 = &$var;
$this->result2 = $var;
$var++;
}
}
$var = 3;
$test = new A();
$test->foo($var);
echo $test->result1; // Result is 4
echo $test->result2; // Result is 3
?>
Function
<?php
function changeString(&$sTest1, $sTest2, $sTest3) {
$sTest1 = 'changed';
$sTest2 = 'changed';
$sTest3 = 'changed';
};
$sOuterTest1 = 'original';
$sOuterTest2 = 'original';
$sOuterTest3 = 'original';
changeString($sOuterTest1, $sOuterTest2, $sOuterTest3);
echo ("sOuterTest1 is $sOuterTest1 <hr/>");
echo ("sOuterTest2 is $sOuterTest2 <hr/>");
echo ("sOuterTest3 is $sOuterTest3 <hr/>");
// sOuterTest1 is changed
// sOuterTest2 is changed
// sOuterTest3 is original
?>