What does “&” mean here in PHP? (ok)

https://stackoverflow.com/questions/1006652/what-does-mean-here-in-php

<?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
?>

Last updated