$a = & $b;
'u içeren bir kod snippet'i ile karşılaştım, ancak gerçekten var olup olmadığını test etmemiştim (if (isset($b))
). PHP'nin bunu nasıl işlediğinden emin değildim, bu yüzden hızlı bir test yaptım ve şimdi daha da meraklıyım.PHP "Referansa göre ata" tuhaflığı
$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";
O çıplak kod ama ne çıktı gösterir: Sadece $b[11] = &$a['ppp']
çıplak atama yeterlidir
- ,
var_dump($a)
hiçbir atama için yapılmış olsa bile, 3 üye değil 2 olarak bildirilmiştir$a['ppp']
.$a['ppp']
, bir değere (NULL
) sahip olduğu, ancak ayrıcaisset()=FALSE
olduğu bildirilmiştir. arada aynı anda - ,
$b[11]
bir değer
NULL
ve
isset()=FALSE
gösterir olsa da, belirtil (görünüşte)
yapar mevcut (!)
ben kontrol ilk 'sorunu' giderdiği takdir, ama esas olarak daha derin bir anlayışa bakıyorum. Ne oluyor? atamak, pas veya tanımlanmamış bir değişken dönerseniz
"NOT NULL" olduğunda "set" değeri –
Bu senaryoda bu kadar meraklıysanız, neden tartışmaya katılmıyorsunuz? –