我想覆盖作为引用返回的数组元素。我可以这样做:
$tmp = $this->event_users_details;
$tmp = &$tmp->firstValue("surcharge");
$tmp += $debt_amount;
我会在一行中这样做:
$this->event_users_details->firstValue("surcharge") += $debt_amount;
但我得到Can't use method return value in write context
其中$this->event_users_details
是在构造函数中注入的对象。
我的功能如下:
public function & firstValue(string $property) {
return $this->first()->{$property};
}
public function first() : EventUserDetails {
return reset($this->users);
}
和users
是私有数组。
答案 0 :(得分:1)
如果没有临时变量商店的“附加费”价值,你就无法做到。
要从函数返回引用,请使用引用运算符&在函数声明和将返回值分配给变量时:
<?php
function &returns_reference()
{
return $someref;
}
$newref =& returns_reference();
?>
我用这段代码检查了它:
class Item
{
public $foo = 0;
}
class Container
{
private $arr = [];
public function __construct()
{
$this->arr = [new Item()];
}
public function &firstValue($propNme)
{
return $this->first()->{$propNme};
}
private function first()
{
return reset($this->arr);
}
}
$container = new Container();
var_dump($value = &$container->firstValue('foo')); // 0
$value += 1;
var_dump($container->firstValue('foo')); // 1