0
我有一个PHP语句如下(在一个类的方法)
array_push(self::USER_BASIC_DETAIL_FIELDS, 'cname_username');
这给了我错误
Cannot pass parameter 1 by reference
然后我尝试将它分配给变量,它一切正常
$r = self::USER_BASIC_DETAIL_FIELDS;
array_push($r, 'cname_username');
我的问题是为什么PHP在上述情况下引发错误? 我有一个答案,但我不知道这么问。答案如下:
array_push
不返回修改后的数组,但更改参数1给出的变量。因此,在存储变量(参数1)的内存位置进行更改。
如果我们传递参数1为self::USER_BASIC_DETAIL_FIELDS
然后用array_push
相同的行为,它会尝试修改类,将用于开发
创建乱我的权利的不断USER_BASIC_DETAIL_FIELDS
?
我认为答案是YES – RiggsFolly
A *常数*就其定义而言是不变的。它不能通过引用传递;变量通过引用传递以改变它们的值。你为什么要修改'self :: USER_BASIC_DETAIL_FIELDS',因为你声明它是一个常量? – axiac
@axiac是的,你是对的。最初我以为'array_push'会返回修改后的数组,所以在第一个参数传递它,然后得到这个错误 – SohelAhmedM