Beklenmedik gözlem: var_dump () Bir dizinin başvurulan unsurları işaretleme edilir ...

0 Cevap php

Ben sadece dizilerle karşı bazı basit hata ayıklama testleri çalışan, ve ben bir dizinin var_dump () yaptığınızda, çıkış başka bir değişken tarafından başvurulan dizisindeki herhangi bir öğe işaretleme olduğunu fark ettik. Basit bir deney olarak, ben aşağıdaki kodu koştu:

$array = range(1,4);

var_dump($array);
echo '<br />';

foreach($array as &$value) {
}

var_dump($array);
echo '<br />';

$value2 = &$array[1];

var_dump($array);
echo '<br />';

hangi aşağıdaki çıktıyı verir:

array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) } 
array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> ∫(4) } 
array(4) { [0]=> int(1) [1]=> ∫(2) [2]=> int(3) [3]=> ∫(4) } 

Eleman 3 ve sonradan elemanı 1 yanında ∫ sembolü unutmayın. O kayıtlar girdinin veri türü görünmüyor unutmayın.

Ben bir skaler türü veya nesneleri veya kaynaklarla var_dump eğer bazı denemeler ardından, bu görmüyorum. Dizi dize verileri içeriyorsa, sembol ve bir Aynı şekilde şamandıra, mantıksal ve nesne girişleri ile, (ve hala veri türünü göstermektedir).

Bu PHP 5.2.8 karşı çalışıyor

İlk soru: Bu davranış başlatmak, ya da ben sadece şimdi önce fark değil bir şeydir ki?

İkinci soru: başvurulan elemanları var_dump tarafından bu şekilde bayraklı edilebilir ise (), bir dizi elemanı başka bir değişken tarafından başvurulan varsa bana tanımanızı sağlayacak çekirdek PHP herhangi bir işlevi yoktur; ya da bir _zval_struct gelen refcount veya ref bayrağı dönecek?

0 Cevap