Menü
Bedava
giriş
ana  /  Sorunlar / PHP'deki dizilerin türleri. PHP'deki bir dizinin duyurusu, dizin türleri ve birleştirici bir masifi geçmek için PHP elemanları ile çalışmak

PHP'deki Dizilerin Türleri. PHP'deki bir dizinin duyurusu, dizin türleri ve birleştirici bir masifi geçmek için PHP elemanları ile çalışmak

İlişkisel Diziler

Basit diziler sadece öğeleri ayırmak için tuşları kullanın ve pratik bir değere sahip değil:

İlişkisel dizilerde, anahtarlar bunun anlamı olduğu anlamına gelir - yaş, isim, vb.:

"Vladimir", "yaş" \u003d\u003e 20]; ?\u003e

İki boyutlu ve çok boyutlu diziler

Şimdiye kadar, sadece tek boyutlu dizilerle ilgileniyoruz, ancak iki boyutlu veya çok boyutlu bir dizi de oluşturabiliriz:

"Vasya"]; $ İnsan ["eller"] \u003d ["sol", "sağ"]; Print_r ($ insan); ?\u003e

Gördüğünüz gibi, bir dizi dolarlık insan yarattık ve sonra içeride başka bir dolarlık insan dizisi yarattı ["el"]. Tarayıcıda sonuç:

Dizi (\u003d\u003e Vasya \u003d\u003e dizi (\u003d\u003e sol \u003d\u003e sağ))

Herhangi bir yuvalamanın çok boyutlu dizileri oluşturabiliriz. Böyle bir dizinin değerlerinin çıktısı aşağıdaki gibidir:

Çok boyutlu dizilerin pratik uygulaması

Unutmayın, önceki derste, malları ve özelliklerini gruplamak istedik mi? Size aldığımız kodu hatırlatayım:

Şimdi tüm bu bilgileri bir değişkene yerleştirebiliriz. Aynı zamanda, her ürün birleştirici bir dizi olacak ve tüm mallar basit bir dizide olacaktır:

"iPhone", "Fiyat" \u003d\u003e 5000, "Miktar" \u003d\u003e true], ["Adı" \u003d\u003e "Samsung Galaxy", "Fiyat" \u003d\u003e 5000, "Miktar" \u003d\u003e True], ["Ad" \u003d \u003e "Nokia Lumia", "Fiyat" \u003d\u003e 4000, "Miktar" \u003d\u003e True]]; ?\u003e

Veya bir alternatif:

"iPhone", "fiyat" \u003d\u003e 5000, "miktar" \u003d\u003e true]; $ Ürünler \u003d ["İsim" \u003d\u003e "Samsung Galaxy", "Fiyat" \u003d\u003e 5000, "Miktar" \u003d\u003e True]; $ Ürünler \u003d ["name" \u003d\u003e "Nokia Lumia", "Fiyat" \u003d\u003e 4000, "Miktar" \u003d\u003e True]; ?\u003e

Her iki seçeneğin sonucu:

Dizi (\u003d\u003e dizi (\u003d\u003e iPhone \u003d\u003e 5000 \u003d\u003e 1) \u003d\u003e Dizi (\u003d\u003e Samsung Galaxy \u003d\u003e 5000 \u003d\u003e 1) \u003d\u003e Dizi (\u003d\u003e Nokia Lumia \u003d\u003e 4000 \u003d\u003e 1))

1. Bir dizi $ City oluşturun, herhangi bir değerle ad tuşunu ekleyin. 2. Herhangi bir rastgele sokaklarla itaatkar bir sokak oluşturun. Her sokağın bir adına (isim) ve evlerin sayısı (Binalar_count), yanı sıra evlerden (Old_Buildings) yıkılmak üzere bir alt değerin yanı sıra olmalıdır.

İlişkisel dizi- Benzersiz tuşlar ve ilişkisel değerler kümesini tanımlamak için kullanılan vazgeçilmez bir veri türü - PHP dahil, tüm programlama dillerinin temel bir elemanıdır. Esasen, birleştirici diziler, PHP'nin, PHP'nin, veri dizilerini tüm akın edebilen yollarla kontrol edebilen birden fazla fonksiyon ve özellik için destek içerdiği web programlamasında böyle önemli bir rol oynar. Bu tür kapsamlı bir destek, onların başvurularındaki dizileri yönetmenin en etkili yollarını arayan geliştiriciler için çok hantal olabilir. Bu yazıda, verilerinizi sonsuz sayıda yolla kesmenize, neşelendirmenize ve parlamanıza yardımcı olacak 10 ipucu vereceğim.

1. Bir dizi öğeleri ekleme.

PHP zayıf yazılmış bir dildir, yani dizi veya boyutunu ayrıntılı olarak tanımlamanız gerekmez. Bunun yerine, bir dizi aynı anda beyan edilebilir ve doldurabilir:

$ Capitals \u003d dizi ("Alabama" \u003d\u003e "Montgomery", "Alaska" \u003d\u003e "Juneau", "Arizona" \u003d\u003e "Phoenix");

Dizinin ek unsurları aşağıdaki şekilde birleştirilebilir:

$ Capitals ["arkansas"] \u003d "küçük kaya";

Dizilerle, numaralandırılmış numaralarla çalışırsanız ve elemanları (bir dizinin başlangıcına) takmayı tercih ederseniz ve ayrıntılı bir işlevi kullanarak öğeleri takın, Array_Push () ve Array_unshift () işlevlerini göz önünde bulundurun (bu işlevler ilişkisel dizilerle birlikte çalışmaz).

2. Dizi Öğelerini Çıkarma

Bir dizi öğesini kaldırmak için, UNSET () işlevini kullanın:

Unsem ($ capitals ["California"]);

Dizilerle çalışma, numaralandırılmış sayılar, dizinin öğelerinin kaldırılmasında daha fazla özgürlük elde edersiniz. Yani, elemanı başlangıçtan ve dizinin sonundan çıkarmak için ARRAY_SHITT () ve ARRAY_POP () işlevlerini kullanabilirsiniz.

3. Anahtarları ve değerleri değiştiririz

Diyelim ki, yeni bir dizi, dizinler olacağı eyaletlerin devletleri, devletlerin devletlerinin kendileri ortak değerler olduğunu varsayalım. Bu görev (yer tuşları ve değerlerdeki değişiklikler) array_flip () işlevleri kullanılarak kolayca çözülür:

$ Capitals \u003d dizi ("Alabama" \u003d\u003e "Montgomery", "Alaska" \u003d\u003e "Juneau", "Arizona" \u003d\u003e "Phoenix"); $ Dates \u003d Array_Flip ($ capitals); // $ Dates \u003d dizi (// "montgomery" \u003d\u003e string "alabama", // "juneau" \u003d\u003e string "alaska", // "Phoenix" \u003d\u003e string "Arizona" //);

4. Masifi birleştirin

Önceki dizinin, web teknolojilerine dayanarak flash kartla birlikte kullanıldığını varsayalım (FlashCard - Metin ve Resim (Yabancı Dilde Eğitimde Kullanılmış)) Servis ve öğrencilerin sadece dünya hakkında değil, bilgilerini kontrol etmelerini sağlamak istedikleriniz. Başkentler, ancak Amerika Birleşik Devletleri'nin başkentleri. Array_merge () işlevini kullanarak bir dizi (devlet başkentleriyle) bir dizi (dünya çapında) ile bağlayabilirsiniz:

$ statecapitals \u003d dizi ("alabama" \u003d\u003e "montgomery", "alaska" \u003d\u003e "Juneau", "Arizona" \u003d\u003e "Phoenix"); $ Countrycapitals \u003d dizi ("Avustralya" \u003d\u003e "Canberra", "Avusturya" \u003d\u003e "Viyana", "Cezayir" \u003d\u003e "Cezayir"); $ Capitals \u003d Array_Merge ($ Statecapitals, $ countrycapitals);

5. Dizi Değerlerini Düzenleme

Dizide bulunan verilerin, büyük harflerin kullanımı ile ilişkili hatalar içerebileceğini ve veri veritabanına veri yapmadan önce bu hataları düzeltmek istediğinizi varsayalım. Bu durumda, geri arama işlevini dizinin her bir öğesine uygulamak için Array_Map () işlevini kullanabilirsiniz:

Fonksiyon büyük harf ($ öğe) ($ element \u003d strtolower ($ öğe); // Tüm harfleri alt kayıt iadesi ucwords ($ öğe) aktarın ($ öğe); // Hatta her kelimenin ilk karakterini kaydetmeye dönüştürüyoruz) $ Capitals \u003d dizi ("Alabama" \u003d\u003e "Montgomery", "Alaska" \u003d\u003e "Juneau", "Arizona" \u003d\u003e "Phoenix"); $ Capitals \u003d array_map ("Capitalize", $ capitals);

6. Anahtarlardaki dizileri sıralıyoruz

FlashCard - FlashCard - Metin ve resme sahip (Yabancı dilde eğitimde kullanılır)), belirli yöntemlerde, örneğin alfabetik olarak kart sıralama da dahil olmak üzere çeşitli öğrenme tekniklerine sahiptir. KSTORT () işlevini kullanarak birleştirici dizileri tuşlar tarafından sıralayabilirsiniz:

$ Capitals \u003d dizi ("Arizona" \u003d\u003e "Phoenix", "Alaska" \u003d\u003e "Juneau", "Alabama" \u003d\u003e "Montgomery"); Ksort ($ capitals);

7. Dizinin sırasının randomizasyonu

Shuffle () işlevini kullanarak elemanları rastgele sırayla karıştırın:

$ Capitals \u003d dizi ("Arizona" \u003d\u003e "Phoenix", "Alaska" \u003d\u003e "Juneau", "Alabama" \u003d\u003e "Montgomery"); karıştır ($ capitals); Foreach ($ K \u003d\u003e $ v) Echo "$ k: $ v
";

Sonuç:

Çıkışa dikkat edin İlişkili olmayan bir dizi var, ancak sayısal bir dizi.

Dizinin randomizasyonu yerine rasgele bir değer seçmek için, Array_rand () işlevini kullanın.

8. Anahtarların ve değerlerin var olup olmadığını belirleyin

Dizinin elemanlarının mevcut olup olmadığını belirlemek için In_Array () kullanabilirsiniz:

$ Capitals \u003d dizi ("Arizona" \u003d\u003e "Phoenix", "Alaska" \u003d\u003e "Juneau", "Alabama" \u003d\u003e "Montgomery"); if (in_array ("juneau", $ başkentler)) (yankı "var!";) başka (yankı "yok!";)

Belirleme yeteneği: Daha az bilinen dizi tuşları var. Array_key_exists () işlevleri kullanılarak uygulanır:

$ Capitals \u003d dizi ("Arizona" \u003d\u003e "Phoenix", "Alaska" \u003d\u003e "Juneau", "Alabama" \u003d\u003e "Montgomery"); İf (array_key_exists ("alaska", $ başkentler)) (yankı "tuşu var!";) Başka (yankı "tuşu yok!";)

9. Bir dizi arıyoruz

Belki de Flashland'ı, kullanıcıların belirli bir sermaye ile ilişkili bir personeli bulmak için kolayca bir kaynak aramasını sağlamak istiyorsunuz. Bu, Array_Search () işlevi kullanılarak yapılabilir (bu işlev dizideki belirli bir değer arıyor ve uygun anahtarı döndürür):

$ Capitals \u003d dizi ("Arizona" \u003d\u003e "Phoenix", "Alaska" \u003d\u003e "Juneau", "Alabama" \u003d\u003e "Montgomery"); $ State \u003d Array_Search ("Juneau", $ başkentler); // $ state \u003d "Alaska"

10. Standart PHP Kütüphanesi

Standart PHP Kütüphanesi (SPL), geliştiricilere, PHP dilinin övünemediği iyi sayıda veri yapısı, arayüz, istisnalar ve diğer özellikleri sunar. Bu özellikler arasında, nesne-noinal sözdizimi kullanarak dizinin yinelemesi (tekrarı) olasılığıdır.

$ Capitals \u003d dizi ("Arizona" \u003d\u003e "Phoenix", "Alaska" \u003d\u003e "Juneau", "Alabama" \u003d\u003e "Montgomery"); $ ArrayObject \u003d Yeni ArrayObject ($ capitals); Foreach ($ arrayObject olarak $ state \u003d\u003e $ sermaye) (printf ("% s başkenti% s
", $ eyalet, $ başkenti);) // Arizona'nın başkenti Phoenix // Alaska'nın başkenti Juneau // Alabama'nın başkenti Montgomery'dir.

Bu, SPL'de yer alan sınıf özelliklerinden sadece biridir. Daha fazla bilgi için, kendinizi PHP belgeleriyle tanıştırın.

PHP'deki dizinin elemanları, sayılar, satırlar, nesneler gibi herhangi bir türün değerlerini içerebilir. Ayrıca, aslında yaratılış anlamına gelen diğer dizileri de içerebilirler. Çok boyutlu veya yuvalanmış Dizi.

Bu derste, çok boyutlu (gömülü) PHP dizileri göz önünde bulundurulur. Onların nasıl oluşturulacağı, bunların PHP'deki çok boyutlu dizi boyunca nasıl bir döngü organize edeceğini nasıl değiştirileceğini açıklanmaktadır.

Çok boyutlu bir dizi nasıl oluşturulur

Geleneksel bir dizinin oluşturulmasına çok benzer olan dizi () tasarımını kullanarak çok boyutlu bir dizi oluşturabilirsiniz. Fark, çok boyutlu dizide, her bir elemanın da bir dizide olduğu gerçeğinde yatıyor.

Örneğin:

$ Myarray \u003d dizi (dizi (value1, value2, value3), dizi (value4, value5, value6), dizi (value7, value8, value9));

Yukarıdaki örneğin iki boyutlu bir dizi oluşturur. Üst düzey dizi 3 element içerir. Her bir eleman ayrıca 3 değer içeren bir dizidir.

Bir ilişkisel diziyi çok boyutlu bir dizi olarak da kullanabilirsiniz. Aşağıdaki örnek, 3 İlişkili dizi içeren endeksli bir dizinin oluşturulmasını göstermektedir:

$ Filmler \u003d dizi (dizi ("başlık" \u003d\u003e "arka cam", "yönetmen" \u003d\u003e "alfred hitchcock", "Yıl" \u003d\u003e 1954), dizi ("başlık" \u003d\u003e "Tam metal ceket", "Direktörü "\u003d\u003e" Stanley Kubrick "," Yıl "\u003d\u003e 1987), dizi (" başlık "\u003d\u003e" Ortalama sokaklar "," Yönetmen "\u003d\u003e" Martin Scorsese "," Yıl "\u003d\u003e 1973));

Dizileri gerektiği kadar derin bir diğerine koyabilirsiniz (pratikte yuvalama derinliği nadiren 3 seviyeye sahip olmasına rağmen). Aşağıdaki örnekte, 3 boyutlu bir dizi gösterilmiştir:

$ Myarray \u003d dizi (dizi (value1, value2), dizi (value3, value4)), dizi (dizi (dizi (value5, value6), dizi (value7, value8)));

Çok boyutlu bir dizideki öğelere erişim

Çok boyutlu dizinin unsurlarına erişmek için, geleneksel bir diziyle çalışmak için kullanılan "Square Braketler" sözdizimini kullanabilirsiniz. İkinci seviye öğelerine iki boyutlu bir dizide erişmeniz gerekirse, sadece ikinci köşeli parantez kümesini kullanmanız gerekir, örneğin:

$ Myarray \u003d dizi (dizi (bir "," iki "," üç "), dizi (dört," beş "," altı "))); // "altı" yankı $ myarray çekin; ?\u003e

Ancak daha önce yarattığımız çok sayıda filmden oluşan çok boyutlu bir dizinin çeşitli unsurlarına erişimi gösteren bir örnek:

Echo "ilk film adı:
"; Echo $ filmler [" başlık "]."

Üçüncü filmin "; Echo" direktörü:
"Echo $ filmler [" Yönetmen "]."

"; ECHO" ilk elemanın bulunduğu iç içe geçmiş dizi:
"; Print_r ($ filmler); echo"

";

Kod Yürütme aşağıdaki sonuç verilecektir:

İlk Filmin Adı: Arka Pencere Üçüncü Filmin Direktörü: Martin Scorsese, birinci elemanda bulunan gömülü bir dizidir: dizi (\u003d\u003e arka cam \u003d\u003e alfred hitchcock \u003d\u003e 1954)

Son örnek, üst düzey dizinin ilk elemanındaki tüm iç içe geçmiş diziye erişimi düzenlemek için $ filmler kullanır ve ardından Dizinin içeriğini çıkarmak için print_r () işlevi kullanılır.

Döngüdeki çok boyutlu bir dizinin tüm unsurlarını söndürme organizasyonu

Sıradan bir boyutlu dizinin olduğu gibi, çok boyutlu dizinin tüm unsurlarının telaşını düzenlemek için Foreach kullanabilirsiniz. Gömülü bir foreach döngüsü oluşturmanız gerekir, yani diğerinin içindeki bir döngü:

  1. Harici döngü, üst düzey dizinin her bir elemanını alır.
  2. Üst seviyenin her bir eleman için, iç çevrim gömülü bir dizi vb.

Örnek, filmler hakkında bilgi içeren 2 boyutlu bir dizi oluşturur ve ardından sayfa üzerinde bilgi görüntülemek için dizi öğeleri tarafından bir döngü düzenlenir:

$ Filmler \u003d dizi (dizi ("başlık" \u003d\u003e "arka cam", "yönetmen" \u003d\u003e "alfred hitchcock", "Yıl" \u003d\u003e 1954), dizi ("başlık" \u003d\u003e "Tam metal ceket", "Direktörü "\u003d\u003e" Stanley Kubrick "," Yıl "\u003d\u003e 1987), dizi (" başlık "\u003d\u003e" Ortalama sokaklar "," Yönetmen "\u003d\u003e" Martin Scorsese "," Yıl "\u003d\u003e 1973)); Foreach ($ film olarak $ film) (echo "

"; Foreach ($ film $ tuşu \u003d\u003e $ değeri olarak) (echo"
$ Tuşu.
$ değer
";) Eko"
"; }

Bu kodun yürütülmesi aşağıdaki sonuç verilecektir:

Başlık Arka Pencere Direktörü Alfred Hitchcock Yılı 1954 Başlık Tam Metal Ceket Direktörü Stanley Kubick Yıl 1987 Başlık Ortalama Streets Direktörü Martin Scorsese Yıl 1973

Özet

Çok boyutlu diziler, örneğin, tablolarda görüntülemek için birden fazla veritabanı kayıtlarını veya değerleri saklamak için herhangi bir veriyi saklamak için uygundur. Çok boyutlu dizilerin kullanımı, PHP komut dosyalarının işlevsellik seviyesini artırabilir.

Ders, PHP'deki dizilerle çalışma imkanı, dizinin duyurulması, dizi türleri: çok boyutlu ve ilişkisel diziler

  1. Sayısal dizinlerle diziler
  2. $ meyveler \u003d "Apple"; $ meyveler \u003d "armut"; $ Fruits \u003d "turuncu"; $ Fruits \u003d "kayısı";

    Günümüzde diziyi başlatmak için bu seçenek pratik olarak kullanılmaz. Aşağıdaki seçenek dizilerle kullanılır:

  3. İlişkisel dizi
  4. Bir dizi oluşturmanın bu varyantı bir dizi nesnesi kullanır:

    $ Fruits \u003d dizi (1 \u003d\u003e "Apple", 2 \u003d\u003e "Armut", 3 \u003d\u003e "Turuncu", 4 \u003d\u003e "Kayısı"); // PHP 5.4 $ 'dan başlayan \u003d dizi [1 \u003d\u003e "Apple", 2 \u003d\u003e "Armut", 3 \u003d\u003e "Turuncu", 4 \u003d\u003e "Kayısı"];

    Dizinin unsurlarına erişim

    1 2 3 4 5 6 7 8 $ Meyveler [0] \u003d "Apple"; $ Meyveler [1] \u003d "armut"; $ Meyveler [2] \u003d "Orange"; $ Meyveler [3] \u003d "Kayısı"; Eko. "Dizinin ilk unsuru -". $ Meyveler [0]. "
    "; Eko. "Dizinin ikinci elemanı -". $ Meyveler [1]. "
    "; Eko. "Dizinin üçüncü elemanı -". $ Meyveler [2]. "
    " ;

    $ meyveler \u003d "Apple"; $ meyveler \u003d "armut"; $ Fruits \u003d "turuncu"; $ Fruits \u003d "kayısı"; "Dizinin ilk elemanı -" echo. $ meyve. "
    ";" Dizinin ikinci elemanı - ". $ Meyveler."
    "; Echo" Üçüncü Dizi Öğesi - ". $ Meyveler."
    ";

    Programın sonucu:

    Önemli: Bir ilişkisel dizideki bir elemanın endeksi olarak bir sayı olmayabilir, ancak bir kelime (tip dize)

    Bir örnek düşünün:

    Misal: İsimler, soyadlar ve yaş öğrencileri olan bir öğrenci dizisi oluşturun. Dizinin öğelerinin değerlerini görüntüleyin

    $ Öğrenci \u003d dizi ("ad" \u003d\u003e John, "Soyadı" \u003d\u003e Smith, "Yaş" \u003d\u003e 20); Echo "kullanıcı adı". $ Öğrenci ["isim"]. "


    ";

    $ Öğrenci ["isim"] \u003d "John"; $ Öğrenci ["Soyadı"] \u003d "Smith"; $ Öğrenci ["yaş"] \u003d 20; Echo "kullanıcı adı". $ Öğrenci ["isim"]. "
    "; Echo" Kullanıcının soyadı ". $ Öğrenci [" Soyadı "]."
    "; Echo" kullanıcı yaşı ". $ Öğrenci [" yaş "]."
    ";

    Sonuç:

    Önemli: Dize tuşları (dizinler) her zaman tırnak içine girmelidir.

    Anahtarsız dizine alınmış diziler:

    Dizideki endekslerin, dizinin değerlerle başlatıldığında genellikle yazılmadığını da düşünmelidir. Sonra sözde sözcük oluştururuz büyük koleksiyon(nesne koleksiyonu):

    $ Öğrenci \u003d dizi ("John", "Smith", 20);

    $ Öğrenci \u003d dizi ("John", "Smith", 20);

    Bu durumda, tercüman kendisi 0 ile başlayarak onlara sayısal endeksler atayacaktır.

    Misal Tipleri dönüştürün ve öğeleri üzerine yaz.
    Var_dump () prosedürünün kullanımına dikkat edin

    1 2 3 4 5 6 7 8 9 "A", "1" \u003d\u003e "B", 2 \u003d\u003e "C", 2 \u003d\u003e "D",); Var_dump ($ my_array); ?\u003e

    "A", "1" \u003d\u003e "B", 2 \u003d\u003e "C", 2 \u003d\u003e "D",); Var_dump ($ my_array); ?\u003e

    Sonuç:

    Dizi (3) (\u003d\u003e string (1) "a" \u003d\u003e string (1) "B" \u003d\u003e String (1) "D")

    Misal Kullanmak Çok boyutlu dizi ve elemanlarına erişim organizasyonu

    1 2 3 4 5 6 7 8 9 10 11 12 "1", 2 \u003d\u003e 2, "çoklu" \u003d\u003e dizi ("1_1" \u003d\u003e "1_1")); Var_dump ($ array_odnom ["ilk"]); var_dump ($ array_odnom [2]); Var_dump ($ array_odnom ["multi"] ["1_1"]); ?\u003e

    "1", 2 \u003d\u003e 2, "çoklu" \u003d\u003e dizi ("1_1" \u003d\u003e "1_1")); Var_dump ($ array_odnom ["ilk"]); Var_dump ($ array_odnom); Var_dump ($ array_odnom ["multi"] ["1_1"]); ?\u003e

    Sonuç:

    String (1) "1" int (2) string (3) "1_1"

    Misal: İki boyutlu 3 x 2 dizisi oluşturun 2. İlk dizge için değerlerle doldurun: "1_1", "1_2", "1_3"; İkinci satır için: "2_1", "2_2", "2_3". Dizinin ilk elemanını görüntüleyin


    Verim:
    1 2 3 4 5 6 7 8 9 10 11 12 $ array_odnom \u003d dizi (1 \u003d\u003e dizi (1 \u003d\u003e "1_1", 2 \u003d\u003e "1_2", 3 \u003d\u003e "1_3"), 2 \u003d\u003e Dizi (1 \u003d\u003e "2_1", 2 \u003d\u003e "2_2" , 3 \u003d\u003e "2_3"),); echo $ array_odnom [1] [1];

    $ array_odnom \u003d dizi (1 \u003d\u003e dizi (1 \u003d\u003e "1_1", 2 \u003d\u003e "1_2", 3 \u003d\u003e "1_3"), 2 \u003d\u003e Dizi (1 \u003d\u003e "2_1", 2 \u003d\u003e "2_2" , 3 \u003d\u003e "2_3"),); echo $ array_odnom;

    Görev php2_1: İki boyutlu 3 x 3'lük bir dizi oluşturun - Pythagora'nın çarpma tablosunun (1, 2, 3; 4, 6, 8 ...)



    Laboratuvar işi:
    Diyelim ki bazı duyurunuz var ve bu duyuruya ihtiyaç duyan birkaç farklı insanın gönderilmesi için. Bunu yapmak için, bir dizi değişen parametre var olan bir reklam içeriğiyle boşluk kurarsınız: insan isimleri ve bir dizi olay dizisi. Ekrandaki son duyurunun bir seçeneğini görüntüleyin. Her iki ilişkisel diziyi kullanmak için dizileri belirlemek için.

    Reklam şablonunu kullanın ve renklere odaklanın:

    Kırmızı - diziler.
    Kahverengi - sayısal değişken.
    Mavi - sabit.

    Sevgili (Aya), Ivanovich!
    Sizi davet ediyoruz açık gün.
    Olayların Tarihi: 12 Mayıs.
    Saygı ile vasily.


    Kodu tamamlayın:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 // duyuru Constanta Tanımlayın ("işareti", "Saygılarımla, Vasya") ; // alıcı isimleri için dizi $ İsimler \u003d dizi (...); // Olaylar için dizi $ Etkinlikler \u003d dizi ("op_doors" \u003d\u003e "Açık gün", "Vistavka" \u003d\u003e "Sergi", ...); $ Str \u003d. "Sevgili (Aya), $ isim!
    "
    ; $ str. \u003d ...; $ str. \u003d ...; Eko ...;

    // Sabit tanımın açıklanması ("işareti", "Saygılar, Vasya"); // adreslerin isimleri için diziler $ isim \u003d dizi (...); // Etkinlikler için dizi $ Etkinlikler \u003d dizi ("OP_DOORS" \u003d\u003e "Açık Gün", "Vistavka" \u003d\u003e "Sergi", ...); $ str \u003d "Sevgili (Aya), $ isim!
    "$ Str. \u003d ...; $ str. \u003d ...; yankı ...;

Son güncelleme: 1.11.2015

Diziler veri kümelerini veya öğelerini saklamak için tasarlanmıştır. Dizideki her bir eleman kendi kendine özgü anahtarı ve değeri vardır. Öyleyse, telefon modellerinin dizisini kaydedin:

"; ?>

İşte dört elementin bir dizisi. Dizideki her eleman bir çift anahtardır - bir değer. Böylece, ilk öğe $ telefonlar \u003d "Nokia N9", bir anahtar var - 0 numaralı ve değer "Nokia N9" dizesidir. Bu tür dizilerde sayısal tuşlar da indeksler denir.

Count () işlevini kullanarak, dizideki öğelerin sayısını bulabilirsiniz. Anahtarların 0 ila 3'ten 3'ten geçmesi ve dizinin boyutunu bilmesi nedeniyle, Döngü içindeki dizilerin elemanlarını çıkarmak mümkündür.

Anahtarların ve elementlerin değerlerini daha net bir şekilde temizlemek için, Print_r işlevini kullanarak bir diziyi geri çekin:

Print_r ($ telefonlar);

Aşağıdaki sonuca olacağız:

Dizi (\u003d\u003e Nokia n9 \u003d\u003e Samsung Galaxy ACE II \u003d\u003e Sony Xperia Z3 \u003d\u003e Samsung Galaxy III)

Dizinin bu oluşturulması da aşağıdakilere eşdeğer olacaktır:

"; ?>

Eleman tuşu belirtmezse, PHP sayıları tuşlar olarak kullanır. Bu durumda, tuşların numaralandırılması sıfırla başlar ve her yeni anahtar birim başına artar.

Dizideki eleman anahtarını bilmek, bu öğeye başvurabilir, değerini alabilir veya değiştirebiliriz:

// 1 $ myphone anahtarında bir unsur alıyoruz \u003d $ telefonlar; Echo "$ myphone
"; // yeni bir değer atama $ telefonlar \u003d" samsung x650 "; echo" $ telefonlar
";

Ancak sadece tam sayıların anahtar olarak kullanılamaz, aynı zamanda satırlar:

Benzer diziler de denir İlişkisel.

Operatör dizisi.

Yukarıda bir dizi oluşturmanın bir yolu olarak kabul edildi. Ancak, dizinin () operatörünün uygulanmasını sağlayan başka bir tane var.

Dizi () operatörü bir dizi unsur alır. Burada ayrıca açıkça belirtilen anahtarlar. Bu nedenle, PHP öğeleri sıfırdan otomatik olarak numaralandırılır. Ancak, her bir öğenin anahtarını da belirleyebiliriz:

"iPhone5", "samsumg" \u003d\u003e "Samsung Galaxy III", "Nokia" \u003d\u003e "Nokia N9", "Sony" \u003d\u003e "Sony Xperia Z3"); echo $ telefonlar ["samsumg"]; ?\u003e

Operasyon \u003d\u003e Anahtarı belirli bir değerle eşleştirmenizi sağlar.

İlişkilendirici Mastivers Büstü

Yukarıda, çevrimin tüm elemanlarını, anahtarların 0'dan 3'ten 3'te belirtildiği, ancak, birleştirici dizilerle birlikte çalışmıyor gibi görünüyordu. Ve onlar için PHP'de, özel bir döngü türü tasarlandı - foreach ...

"iPhone5", "samsumg" \u003d\u003e "Samsung Galaxy III", "Nokia" \u003d\u003e "Nokia N9", "Sony" \u003d\u003e "Sony Xperia Z3"); Foreach ($ 'lık telefonlar olarak) Echo "$ ürün
"; ?>

Foreach döngüsünde, tüm öğeler dizinden sırayla çıkarılır ve değer, anahtar kelimeden sonra belirtilen değişkene yerleştirilir. Bu durumda, $ Telefonlar dizisinden dört değerin tümü $ öğe değişkenine yerleştirilir. Dizideki son öğe çıkartıldığında, döngü tamamlanır.

Foreach Loop, yalnızca değerleri değil aynı zamanda öğelerin anahtarlarını çıkarmanızı sağlar:

"iPhone5", "samsumg" \u003d\u003e "Samsung Galaxy III", "Nokia" \u003d\u003e "Nokia N9", "Sony" \u003d\u003e "Sony Xperia Z3"); Foreach ($ tuşları olarak $ tuşlar \u003d\u003e $ değeri) Echo "$ tuşu \u003d\u003e $ değeri
"; ?>

Burada, döngünün elemanlarını $ anahtar değişkenine geçerken, eleman anahtarı iletilecektir ve değeri değer değişkeninde olacaktır.

Foreach döngüsüne alternatif, liste ve her işlevin kullanımını temsil eder:

"iPhone5", "samsumg" \u003d\u003e "Samsung Galaxy III", "Nokia" \u003d\u003e "Nokia N9", "Sony" \u003d\u003e "Sony Xperia Z3"); (Liste ($ tuş, $ değeri) \u003d her ($ telefon)) Echo "$ tuş \u003d\u003e $ değeri
"; ?>

Her işlev yanlış değerini döndürene kadar döngü çalışacaktır. Her fonksiyon, $ telefon dizisinin tüm elemanlarından geçer ve onu elemanın anahtarını ve değerini içeren bir dizi biçiminde alır. Ardından, bu dizi liste işlevine iletilir ve ilerler, parantez içindeki değişken dizisinin değerlerini atar. Her işlev bir dolarlık telefon dizisinin kaba kuvvetini tamamladığında, yanlış döndürür ve iken dönemin etkisi tamamlanacaktır.

Çok boyutlu diziler

Önceki örneklerde, elementlerin değerlerinin sayılar, çizgilerle temsil edildiği, yalnızca bir boyutlu diziler göz önünde bulunduruldu. Ancak PHP'de, diziler de çok boyutlu olabilir, yani, dizinin elemanının kendisi bir dizidir. Örneğin, çok boyutlu bir dizi oluşturun:

Dizi ("iPhone5", "iPhone5s", "iPhone6"), "Samsumg" \u003d\u003e Dizi ("Samsung Galaxy III", "Samsung Galaxy Ace II"), "Nokia" \u003d\u003e Dizi ("Nokia N9", "Nokia Lumia 930 ")," Sony "\u003d\u003e dizi (" Sony Xperia Z3 "," Xperia Z3 Dual "," Xperia T2 Ultra ")); Foreach ($ marka olarak $ telefonlar \u003d\u003e $ ürün) (yankı "

$ marka

"; Eko"
    "; Foreach ($ Key \u003d\u003e $ değeri olarak $ öğeler) (yankı"
  • $ değer
  • ";) Eko"
"; } ?>

Ve çekildiğinde, 4 Liste alacağız:

Bunun unsuruna atıfta bulunmak için, ayrıca anahtarları köşeli parantez içinde belirtmeniz gerekir. Örneğin, ilk dizideki ilk öğeye bakın. İlk dizinin anahtarı "Apple" olduğundan ve ilk dizideki ilk öğenin anahtarı 0 numarasıdır (açıkça belirtilen anahtarlar olduğumuzdan beri):

Echo $ telefonlar [Apple];

Benzer şekilde, üçüncü dizinin ikinci elemanını alabilirsiniz:

Echo $ telefonlar ["Nokia"];

Yuvalanmış dizilerin de ilgili dizileri temsil ettiğini varsayalım:

Dizi ("Apple" \u003d\u003e "iPhone5", "Samsumg" \u003d\u003e "Samsung Galaxy III", "Nokia" \u003d\u003e "Nokia N9", "Tabletler" \u003d\u003e Dizi ("Lenovo" \u003d\u003e "Lenovo Ideatab A3500" , "Samsung" \u003d\u003e "Samsung Galaxy Tab 4", "Apple" \u003d\u003e "Apple iPad Air")); Foreach ($ TOVAR AS $ TOVAR \u003d\u003e $ ürün) (ECHO "

$ Tovar

"; Eko"
    "; Foreach ($ Key \u003d\u003e $ değeri olarak $ öğeler) (yankı"
  • $ Key: $ değer
  • ";) Eko"
";) // $ 'ın farklı bir değeri atama [" telefonlar "] [" Nokia "] \u003d" Nokia Lumnia 930 "; // Yankı $ tekniklerinin bu değerini [" telefonlar "]' nın bu değerini geri çekin [" nokia "];? \u003e