Sayısal endeksli PHP diziler peşpeşe başlatıldı veya eşleştirilir?

2 Cevap php

Ben PHP diziler ile ilgili bir soru var.

Ben bir dizi oluşturursanız

$ids = array();

sonra o pozisyonda 1000'de şey koymak:

$ids[1000] = 5;

Nasıl tercüman dahili bu yapardın? Diziler Java gibi bellek bitişik topaklar mısınız? 1000 ints initlialized olan int [1000] gibi olurdu?

Yoksa 1000 anahtar ve 5 verilerine bağlayan bir harita daha? Ben PHP internals bahsediyorum.

Ben bir sayıda dizini varsa tüm dizinleri başlatmak gerekir, çünkü daha az verimli olurdu? VEYA bir anahtar olarak numarası ile tabanlı harita?

2 Cevap

Diziler PHP sağlamalarının vardır. Yani sizin deyiminizle, onlar eşleştirilir. Sen onların var olmadığını görmek için başlatmasından sonra $ids[0...999] bakarak ve memory_get_usage() önce ve başlatma sonrasında karşılaştırarak örnekte bu kontrol edebilirsiniz.

PHP tüm diziler etkili yerleştirme düzeni korumak ilişkilendirilebilir diziler. Yani:

$array[1000] = 5;

temelde farklı değildir:

$array['hello'] = 'world';