array_pusharray_pushでの第一引数は唯一の変数
を受け入れ、私は(クラスのメソッドで)次のように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)が格納されているメモリ内の場所で行われます。我々はself::USER_BASIC_DETAIL_FIELDS
として引数1を渡している場合
することは、その後array_push
の同じ動作でそれは開発者
ために混乱を作成するクラスの定数USER_BASIC_DETAIL_FIELDS
を変更しようと、私は右ですか?
私は答えがYESだと思います – RiggsFolly
A constant *は、その定義によって、変わらないものです。参照渡しすることはできません。変数はその値を変更するために参照渡しされます。定数として宣言して以来 'self :: USER_BASIC_DETAIL_FIELDS'を修正するのはなぜですか? – axiac
@axiacはい、あなたは正しいです。当初、私は 'array_push'が変更された配列を返して1番目の引数に渡してからこのエラーを受け取ったと考えました – SohelAhmedM