Короче говоря: нигде в ваших примерах.
В случае, если мы имеем дело с objects
, вам вовсе не обязательно использовать справочный оператор .
Если вы имеете дело с другими типами данных, наиболее распространенными ссылочными операциями являются:
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(); // $myValue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo $myValue; // prints the new value of $obj->value, i.e. 2.
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // break the reference with the last element
Будьте осторожны, так как последний unset()
-колл важен, если ваш код снова использует $value
ниже по течению.
В то время как первый случай (с передачей по ссылке) встречается гораздо чаще, чем второй, например, особенно при работе с массивами:
$array = array(1, 2, 3, 4);
function modifyArray(&$data)
{
unset($data[1]);
}
modifyArrax($array);
// $array = array(0 => 1, 2 => 3, 3 => 4)