Olası Çoğalt:
Are PHP Associative Arrays ordered?PHP, ilişkisel dizide düzeni korur mu?
farklı anahtarlar ile ilişkisel dizi öğe eklerseniz, ekleme sırasının korunmuş mu? Verilen öğenin "önceki" ve "sonraki" öğelerine nasıl erişebilirim?
Olası Çoğalt:
Are PHP Associative Arrays ordered?PHP, ilişkisel dizide düzeni korur mu?
farklı anahtarlar ile ilişkisel dizi öğe eklerseniz, ekleme sırasının korunmuş mu? Verilen öğenin "önceki" ve "sonraki" öğelerine nasıl erişebilirim?
Evet, php dizilerinin örtülü bir sırası vardır. İncelemek için reset
, next
, prev
ve current
- veya sadece bir foreach
loop kullanın.
Evet, siparişi koruyor. php dizilerini ordered hash maps olarak düşünebilirsiniz.
Öğeleri "dizin oluşturma süresi" tarafından sipariş edilen olarak düşünebilirsiniz. Eğer bir anahtar doesnt şu anda dizide mevcut bir girdi ekliyoruz Örneğin
için$a = array();
$a['x'] = 1;
$a['y'] = 1;
var_dump($a); // x, y
$a = array();
$a['x'] = 1;
$a['y'] = 1;
$a['x'] = 2;
var_dump($a); // still x, y even though we changed the value associated with the x index.
$a = array();
$a['x'] = 1;
$a['y'] = 1;
unset($a['x']);
$a['x'] = 1;
var_dump($a); // y, x now! we deleted the 'x' index, so its position was discarded, and then recreated
Özetlemek gerekirse, giriş pozisyonu listesinin sonu olacak. Mevcut bir anahtar için bir girişi güncelliyorsanız, konum değişmez. Yukarıda gösterilen doğal sırayı kullanarak dizilerin üzerinde döngüleri
. next() current() prev() reset() ve arkadaşlarınız, isterseniz foreach dilden beri kullanıldığından nadiren kullanılsa da kullanabilirsiniz. Ayrıca, print_r() ve var_dump() sonuçları doğal dizi sırasını kullanarak da üretir.
Java ile tanıyorsanız, LinkedHashMap en benzer veri yapısıdır.