2012-06-06 19 views
48

Python arka planından geliyorum ve benzer olan python veri türü (sözlük) sırasız anahtar değer çiftleri kümesidir.PHP İlişkilendirilmiş Diziler emrediliyor mu?

PHP ilişkilendirici dizilerin sırasız olup olmadığını merak ediyorum? Sipariş edilmek üzere görünüyorlar.

$test = array(
    'test' => 'test', 
    'bar' => 'bar', 
); 

var_dump($test);  

var_dump(array_slice($test, 0, 1)); 

Test her zaman çubuktan önce gelir ve bu diziyi gördüğünüz gibi dilimleyebilirim. Yani bu her zaman php sürümleri boyunca sipariş edilmek garantilidir? Sipariş, diziyi bildirdiğim sıra mı? Yani bir şey dizide [0] yerleştirmek için 'testi' işaret ediyor? http://php.net/manual/en/language.types.array.php'u okudum ama bu konuda çok fazla ışık yaymıyor. Yanıtlarını takdir ediyorum. Ty

+6

Bu cevapların birçoğu, dizilerin sipariş edildiğini belirten PHP kılavuzuna başvurur. Ama bu asıl soruya hiç cevap vermiyor. Ne soruluyordu (varsayılan) emri *** is ***! Varsayılan sıra * öğelerin atandığı sıra olmak için * görünür *, ancak belgeler bu sürümde bir sürümden diğerine kadar sayabileceğimizi belirtir? – flymike

cevap

46

PHP ilişkisel diziler (yanı sıra sayısal diziler) sıralanır ve PHP ksort(), uksort() gibi dizi anahtarı sipariş başa çeşitli fonksiyonları sağlayan ve ayrıntılı krsort()

, PHP beyan sağlar bozuk sayısal anahtarlar ile diziler:

$a = array(3 => 'three', 1 => 'one', 2 => 'two'); 
print_r($a); 

Array 
(
    [3] => three 
    [1] => one 
    [2] => two 
) 
// Sort into numeric order 
ksort($a); 
print_r($a); 
Array 
(
    [1] => one 
    [2] => two 
    [3] => three 
) 

From the documentation:

PHP dizisindeki bir dizi aslında bir harita'dir. Bir harita, değerleri anahtarlarla ilişkilendiren bir türdür. Bu tip birkaç farklı kullanım için optimize edilmiştir; bir dizi, liste (vektör), karma tablosu (bir haritanın uygulanması), sözlük, koleksiyon, yığın, sıra ve muhtemelen daha fazlası olarak ele alınabilir. Dizi değerleri diğer diziler olabileceğinden, ağaçlar ve çok boyutlu diziler de mümkündür.

7

documentation devletler:

An array in PHP is actually an ordered map. 

Yani evet, her zaman sıralanır. Diziler, hash table olarak uygulanır. php manual itibaren

+1

Tabi ki ilk defansı okudum ama hala kafam karıştı. $ Test = array ('foo', 'bar') varsa, $ test [0] 'ın foo, $ test [1]' in olduğunu söylerim. Ancak bir ilişkisel dizi olduğunda, tuşlar sayısal olarak sıralanmaz. $ test ['test'] şimdi ilk sırada yer alıyor ancak sayısal olarak indekslenmiyor, bir dizgeyle indeksleniyor, bu yüzden kafam karışmış ve yayınlanmıştı. – dm03514

+1

@ dm03514 Seni yakaladığımdan emin değilim. Ancak PHP'deki tüm diziler aslında ilişkilendirici dizilerdir. Umarım yardımcı olur. – alexn

+1

bu yanıt doğrudur ama o kadar gereksiz küçümseyen kapalı geliyor ... – mikegreiling

1

:

Arrays sıralanır. Sipariş çeşitli sıralama işlevleri kullanılarak değiştirilebilir. Daha fazla bilgi için array functions bölümüne bakın.

Sipariş ettikleri gerçeğine güvendim ve sahip olduğum her projede tutarlı bir şekilde çalıştım.