Nikic another thread belirtilen:Neden foreach, 1 yerine 2 sayısını reddeder?
$array
iterasyon foreachta kullanım için "yumuşak kopyalanmış" için Sağ [bir foreach] önce
.
$array = array(0, 1, 2); xdebug_debug_zval('array'); // refcount=1, is_ref=0 // so far so good foreach ($array as $key => $value) { xdebug_debug_zval('array'); // refcount=3, is_ref=0 } // why is refcount 3 instead of 2?
Sadece tarafından: Bu benim test kodu farklı bir sonuç gösteriyor, hiçbir gerçek kopya yapılır, ancak
$array
ait zval sadece refcount 2. Ancak
yükselmiştir demektir Kodlara baktığımızda, en fazla iki dizi değişkenini görebiliriz.
Neden refera 3
?
foreach
'dan sonra neden 2
refcount çalıştırılmıyor?
Foreach döngüsünde, $ value değişkenini kullanarak dizi öğenize başvurmamalısınız? – Crackertastic
@Crackertastic, döngü içinde hiçbir değişken kullanmıyorum. – Pacerier
'Refcount' 2 alıyorum, bir şey mi eksik? dizi: (refcount = 2, is_ref = 0) = dizi (0 => (refcount = 1, is_ref = 0) = 0, 1 => (refcount = 1, is_ref = 0) = 1, 2 => (refcount = 2, is_ref = 0) = 2) ' – vee