$d = 10; $d = func($a, $b); exit; } if ($which == 1) { /** * 返回引用示例1 */ class foo { public $value = 20; function &getValue() { return $this->value; } } $obj = new foo(); $value =& $obj->getValue(); // test 2: $obj->value = 30; echo $value; exit; // test 1: $value = 30; echo $obj->value; exit; } $a = '100'; $b =& $a; $b = 200; echo $a;
//1 echo $b . '<br/>'; l($b); //7 echo $b . '<br/>'; class foo { public $v = 42; public function &getValue() { //返回的引用 return $this->v; } } $o = new foo(); $m =& $o->getValue(); //引用的绑定 $o->v = 2; // $m =2; echo $m . '<br/>'; // 注意: // 如果试图通过return ($this->v) 这种形式来返回,会不起作用并报错。 // 因为这是试图返回一个表达式的结果而不是一个引用的变量。 /*** pointer |value|variable 1 |NULL | 2 |NULL | 3 |NULL | 4 |NULL | 5 |NULL |
foo($a); echo $a . '<br />'; function &bar() { $a = 3; return $a; } class foo { public $value = 42; public $name = 'Andi'; public function &getValue() { return $this->value; } public function &getName() { return $this->name; } } $obj = new foo(); $myValue1 =& $obj->getValue(); $myValue2 = $obj->getValue(); echo $myValue1 . ':' . $myValue2 . '<br />'; $obj->value = 2; echo $myValue1 . ':' . $myValue2 . '<br />'; $myName1 =& $obj->getName(); $myName2 = $obj->getName(); echo $myName1 . ':' . $myName2 . '<br />'; $obj->name = 'Cooler Typ'; echo $myName1 . ':' . $myName2 . '<br />';
require_once '../../includes/header.php'; ?> <pre> <?php //Do not use return-by-reference to increase performance class foo { public $value = 42; public function &getValue() { return $this->value; } } $obj = new foo(); $myValue =& $obj->getValue(); // $myValue is a reference to $obj->value, which is 42. $obj->value = 2; echo $myValue . "\n"; // prints the new value of $obj->value, i.e. 2. //To use the returned reference, you must use reference assigment: function &collector() { static $collection = array(); return $collection; } $collection =& collector(); //you must use reference assigment $collection[] = 'foo'; var_dump($collection); //To pass the returned reference to another function expecting a reference you can use this syntax: