$a = & $b;
を含むコードスニペットが出現しましたが、$ bが実際に存在するかどうかはテストされていませんでした(if (isset($b))
)。私はPHPがこれをどのように処理したか分からなかったので、素早く裸のテストをノックアップしました。今はもっと興味があります。PHP "Assign by reference"奇妙
$a = array('a'=>'b', 'x'=>'y');
$b = array();
$b[10] = &$a['a'];
$b[11] = &$a['ppp'];
var_dump($a);
var_dump($b);
echo (isset($a['ppp']) ? "SET" :" NOT SET") . "\n";
echo (isset($b[11]) ? "SET" :" NOT SET") . "\n";
それは裸のコードですが、どのような出力が示すことである:ちょうど$b[11] = &$a['ppp']
の裸の割り当てが十分である
- 、
var_dump($a)
は何の割り当てがために作られなかったにもかかわらず、3人のメンバーではない2を持つと報告され$a['ppp']
。$a['ppp']
は値(NULL
)を有すると報告されているが、isset()=FALSE
も報告されている。 。一方、同時に、
$b[11]
は値NULL
とisset()=FALSE
を示してその参照(どうやら)は存在しないにも関わらず(!)
私は最初の修正に「問題」をチェックすることを理解します、私は主に深い理解を探しています。何が起こっていますか?あなたは割り当て、パス、または参照によって未定義の変数を返す場合
値が 'NOT NULL 'のときに設定されます –
このシナリオに興味があるのなら、なぜあなたは議論に参加しませんか? –