Bu anlamıyla onlar diziler değildir Çoğunlukla bu
php
dizide hakkında tüm sorularınıza cevap verecektir. Onlar diziler gibi görünen haritalar.
http://nikic.github.io/2012/03/28/Understanding-PHPs-internal-array-implementation.html
Geçerli 5.5.2 kaynağından çekilen aşağıdaki gibidir: dahili ulong nNextFreeElement daha fazla dolayısıyla bu hata
veren artmaz
(nNextFreeElement artık LONG_MAX
if (zend_hash_next_index_insert(Z_ARRVAL_P(container), &new_zval, sizeof(zval *), (void **) &retval) == FAILURE) {
zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
retval = &EG(error_zval_ptr);
Z_DELREF_P(new_zval);
}
: zaten PHP kaynağı itibaren
) işgal
İşte bu durumda bir hata döndürdüğüne inandığım kod kısmı (LONG_MAX zaten dolu olduğu için). Bu çağrıda bayrak = HASH_NEXT_INSERT.
if ((p->nKeyLength == 0) && (p->h == h)) {
if (flag & HASH_NEXT_INSERT || flag & HASH_ADD) {
return FAILURE;
}
....
Dizinin 0'dan MAX tamsayı değerine kadar doldurulması mümkün olmamıştır. Ve max olduğu için dizide başka bir öğe ekleyemezsiniz? – bestprogrammerintheworld
2 milyar elementi neden kullanmaya çalışıyorsunuz? –
[burada] çalışır (http://codepad.org/8fyIoxZ7). PHP versiyonunuz eski olabilir. –