PHP'ye iki boyutlu dizi ekleyin. PHP'de diziler

1. PHP dizisi nedir?
2. Bir PHP dizisi örneği?
3. Tek boyutlu dizi (vektör)
- indeks
- ilişkisel
4. İki boyutlu dizi (dizideki dizi, matris)
5. Dizilerle çalışma işlevleri (dizide dizi, matris)

Bu konuya vazgeçilmiş örneklerle başlamak istiyorum. Diyelim ki bazılarını düşünüyoruz insan... O sahip ad, soyad, adres, telefon numarası, cinsiyet, boy, göz rengi vesaire. Tüm bu noktalara ilişkin bilgiler, bir kişi hakkında bir dizi veriye atfedilebilir.

Dizi, belirli noktalar olmaksızın farklı bir türde olabilir. Sadece bir tema olacak. şunu söyleyelim web programlama... Ve unsurlar olarak diller olacak - HTML, CSS, JavaScript, PHP, MySQL... Toplamda 5 element var.

Son örneğe dayanarak, bir dizi varsayalım:

web programlama
1. HTML
2. CSS
3. JavaScript
4. PHP
5.Mysql

Şimdi bu örneğe bakalım ve temel kavramları analiz edelim.

PHP'de diziÖğe sayısı sabit olan, ortak bir konuyla ilgili sıralı olarak yerleştirilmiş homojen veriler kümesidir.

Bu örnekteki dizi çağrılacak web programlama.

Her elemanın kendi sıra konumu, tanımlayıcısı vardır.
dizin(dizi anahtarı) - öğenin tanımlanabileceği sıralı bir sayı veya bir metin değeri.

Yukarıdaki örnekteki endeksler 1'den 5'e kadar sayısal değerler... İndeks 2'ye erişirken, CSS'yi göreceğiz.

PHP dizi örneği

Şimdi yukarıdaki örneğe Rusça değil PHP sözdiziminde bakalım. Diyelim ki dizi daha kısa olarak adlandırılacak - ... Köşeli parantezler dizini ekleyecektir.

Basit bir dizi örneğine bakalım, indislerin değeri sayısal değerler olacak ve diziyi değişkenlere değer atamış gibi oluşturacağız.

$ web = 'HTML';
$ web = 'CSS';
$ web = 'JavaScript';
$ web = 'PHP';
$ web = 'MySQL';

$ ağ; // bu değişken 5 elemanlı bir dizi içeriyor

// dizi elemanlarından birini görüntülemek için dizideki indeksi belirtmek yeterlidir
yankı $ ağ; // PHP çıktısı verecek

Tek boyutlu dizi

İNDEKS DİZİ

Yukarıda, web programlama ile tek boyutlu bir dizi örneğine baktık.
Nadiren bu şekilde oluşturulur. Dizinin yapısını oldukça açık bir şekilde gösterir. Daha sıklıkla başka bir yönteme başvururlar.

$ web = dizi ('HTML', 'CSS', 'JavaScript', 'PHP', 'MySQL');
yankı $ ağ; // 'HTML' çıktısı verecek
yankı $ ağ; // 'JavaScript' yazdırır
yankı $ ağ; // 'PHP' yazdırır

İndeks değerlerini ayarlamak istiyorsanız aşağıdaki gibi belirtmelisiniz. İmza => bir değere bir indeks atamak için bir işaretçidir veya bir indeks değerine tam tersi.

$ web = dizi (1 => 'HTML', 2 => 'CSS', 3 => 'JavaScript', 4 => 'PHP', 5 => 'MySQL');
yankı $ ağ; // HTML
yankı $ ağ; // CSS
yankı $ ağ; // PHP
Örnekte, sayma 1'den başlar. Dolayısıyla 0 indeksli değişken boştur.

Bir sonraki örnekte, indeksi belirtmeyeceğiz.

$ gün = 'Pazartesi'; // dizin 0
$ gün = 'Salı'; // 1
$ gün = 'Çarşamba'; // 2
$ gün = 'Perşembe'; // 3
$ gün = 'Cuma'; // 4
Sıralı dolumun sıfırdan gerçekleştiğini izleyebilirsiniz.

İLİŞKİLENDİRİCİ DİZİ

Genellikle bir dizi öğesi için değişmez bir dizin oluşturmaya ihtiyaç vardır. Yukarıda bahsettiğim gibi, böyle bir indeks Latin harflerinden oluşmalı ve isim tırnak içine alınmalıdır. Bir insan örneğini düşünün.

$ user ['nick'] = 'Mantık';
$ kullanıcı ['isim'] = 'Paul';
$ kullanıcı ['yaş'] = '25';
$ user ['seks'] = 'Erkek';

$ kullanıcı; // $ user değişkeni, harf indeksli 4 elemanlı bir dizi içeriyor

// dizinin elemanını göster, onun değişmez indeksini belirle
echo $ web ['ad']; // 'Paul' yazdırır
Gördüğünüz gibi, her şey oldukça basit. Yalnızca indeks değeri alıntılanır.

iki boyutlu dizi

Tek Boyutlu Dizi ile ilk bölümü kaçırdıysanız, okumanızı şiddetle tavsiye ederim.
Basitçe söylemek gerekirse, bir dizi içinde bir dizidir. Yani, büyük bir dizinin elemanları farklıdır. Bu tür diziler, betiğin çalışmasını çok yavaşlatır, RAM'i yükler, bu nedenle, bu tür veri gruplarını hızlı bir şekilde işlemek için, Veritabanları oluşturulmuştur (Veritabanı Nedir?), Ama daha sonra bunun hakkında daha fazla bilgi. İki boyutlu bir dizi örneğine bir göz atalım.

// Dünyanın Parçalarının adlarını içeren dizi
$ m = dizi ('Avrupa', 'Asya', 'Afrika', 'Amerika', 'Avustralya ve Okyanusya');

// Ülkelerin isimlerini içeren dizi
$ s = dizi ('Rusya', 'Ukrayna', 'Beyaz Rusya', 'Kazakistan');

// Başkentlerin isimlerini içeren dizi
$ с = dizi ('Moskova', 'Kiev', 'Minsk', 'Astana');

// bir 2B dizi Coğrafya oluştur
$ coğrafya = dizi ($ m, $ s, $ c);
?>
Dahil edilen dizilerde, fark ettiğiniz gibi, farklı sayıda öğe olabilir. Tek boyutlu dizilerle ilgili kısımdan, bir dizinin her elemanının bir indeksi olabileceği sonucu çıktı. Şimdi dahil edilen her dizi için farklı bir değer atayalım.

Bunun için son satırı genişletip aşağıdaki gibi yazacağız.

$ coğrafya = dizi ('Dünyanın Parçaları' => $ m, 'Ülkeler' => $ s, 'Başkentler' => $ s);

php dizileriyle çalışmak için işlevler

Her biri için- döngü sayısının dizi öğelerinin sayısına eşit olduğu dizilerle çalışmak için döngüsel bir işlev.

Aşağıdaki forma sahiptir.

PHP Kodu

foreach ($ anahtarı => $ değeri olarak dizi)
komutlar;
Eh, hemen bir iş örneği

// ünlü IT ile bir dizi oluştur
$ isimler ["Ritchie"] = "Dennis";
$ isimler ["Thompson"] = "Ken";
$ isimler ["Gates"] = "Fatura";
$ isimler ["İşler"] = "Steve";

foreach ($ anahtar olarak $ adları => $ değeri) (
echo "$ değer $ anahtar";
}
?>
Komut dosyası görüntülenecek

Dennis Ritchie
Ken Thompson
Bill Gates
Steve Jobs
Saymak- bir dizideki öğelerin sayısını döndüren bir işlev.

yankı sayısı ($ adları); // IT ile olan örneğimizde 4 değerini döndürecek
Çeşit- bir dizinin öğelerini sıralayan bir işlev. Sayısal indeks değerleri için uygundur.
Arsort- bir dizinin öğelerini ters sırada sıralayan bir işlev.

sırala ($ isimler); // sırayla sıralar. Endeks numaralarında ise uygundur
arsort ($ adları); // ters sırada sırala. Yani, indekslere göre elemanlar 3, 2, 1, 0 sırasına göre olacaktır.
Ayarı kaldır- bir dizinin bir öğesini kaldıran bir işlev.

ayarlanmamış ($ masiv); // dizi elemanını indeks 2 ile silme
ayarlanmamış ($ büyük); // tüm diziyi sil
dizi_arama- dizi arama işlevi.

Ders 7. PHP'de Diziler

İki argümanı var. Basitçe söylemek gerekirse, bir dirgen dizisine sahiptir ('ne', nerede)

$ hayvanlar = 'köpek';
$ hayvanlar = 'kedi';
$ hayvanlar = 'kuş';
echo array_search ("kedi", $ hayvanlar); // elemanın indeksini görüntüler - sayı 2
Karıştır- dizi değerlerinin tuşlarını karıştıran bir işlev.

karıştır ($ hayvanlar); // öğeleri rastgele sırala
Dikkatiniz için teşekkürler!

önceki makale
Ders 6. PHP'de Döngüler Sonraki makale
Ders 8. PHP'de bir dosya bağlama. Dahil et ve gerek

Makaleye yapılan yorumlar (vk.com)

Boş bir dizi oluşturur.

Değerlerin çıktısını daha sonra diziye verebilirsiniz, örneğin:

Şu anda $ myArray, "ağaç", "ev" ve "köpek" içeriyor. Yukarıdaki komutların her biri, zaten orada olan öğeler korunarak diziye eklenir.

Diğer dillerden gelince, bu şekilde bir dizi ekleme bana garip geldi. $ myArray + = "dog" veya benzeri bir şey yapmayı bekliyordum ...

veya Visual Basic Koleksiyonları gibi bir "add()" yöntemi olabilir. Ancak bu basit ekleme sözdizimi kısa ve kullanışlıdır.

Öğeleri kaldırmak için gerçekten unset () işlevini kullanmalısınız:

... "ev"i diziden kaldırır (diziler sıfır tabanlıdır).

PHP Dizi Temelleri

... tüm diziyi yok edecek.

Açık olmak gerekirse, bir diziye ekleme yapmak için kullanılan boş köşeli parantez sözdizimi, PHP'ye dizin atamak yerine her değere otomatik olarak dizin atamasını söylemenin bir yoludur. Covers, PHP aslında bunu yapar:

İndeksleri dilerseniz kendiniz atayabilir, dilediğiniz rakamı kullanabilirsiniz. Ayrıca bazı öğelere diğerlerinden ziyade dizin numaraları atayabilirsiniz. Bunu yaparsanız, PHP geldiğinde eksik dizin numaralarını atanan en büyük dizin numarasından artırarak dolduracaktır.

Bu nedenle, bunu yaparsanız:

... dizin numarası 21, dog öğesine atanacaktır. PHP, dizinleri aşamalı olarak atamak için akıllı kalıp eşleştirmesi gerçekleştirmez, bu nedenle, dog öğesine 30 dizin atamak isteyebileceğinizi bilemez. " Dizinin artış modelini belirtmek için diğer işlevleri kullanabilirsiniz. Buna girmeyeceğim, ama hepsi PHP belgelerinde.

Diğer bazı dillerde (AS3 gibi), yeni bir diziyi başlatmanın, nesne oluşturma ve örnekleme amacıyla yapılmadığı takdirde daha hızlı olduğu not edilmiştir. PHP'de herhangi bir denklik olup olmadığını merak ediyorum?

PHP'de diziler. PHP'de dizilerle çalışma.

Bu makale PHP'de dizilerle çalışmayı (temel bilgiler) kapsar. PHP'deki diziler, birden çok değişkeni tek bir değişkende saklamanıza izin veren bir veri türüdür.

İşte basit bir örnek:

Yukarıdaki örnekte, $products, birkaç farklı ürünü depoladığımız bir dizidir. Daha sonra, her birine “indeksler” (anahtarlar) aracılığıyla atıfta bulunarak tüm bu ürünleri çıkardık: 0, 1 ve 2.

Tabii ki, bireysel değerler, örneğin bunun gibi ayrı değişkenlerde de saklanabilir:

Bu elbette iyidir, ancak bir anda tüm bu unsurları tekrarlamamız gerektiğini düşünelim. Burada nasıl olunur? Her değişken için kod yaz? Uzun ve rahatsız edici. Çözüm dizileri kullanmaktır.
Döngüleri kullanarak, her yinelemede (adım) indeksler (anahtarlar) sayesinde bir sonraki öğeye erişebiliriz.

PHP'de bir dizi oluşturma.

PHP'de bir dizi tanımlamaya gerek yoktur. array() fonksiyonunu kullanarak bir dizi oluşturabiliriz:

Bu durumda boş bir dizi oluşturduk. Virgülle ayrılmış parantez içinde birkaç değer belirtirsek, bu diziyi birkaç elemanla doldururuz:

Dizi türleri.

1. "Dizinli" diziler veya "otodiziler". Yukarıda böyle bir dizinin örneklerini zaten vermiştik. Bu dizilerin özelliği, otomatik olarak ("anında") oluşturulan sayısal indekslere sahip olmalarıdır. Öğeler 0'dan başlayarak numaralandırılır.

Dizine alınmış bir dizinin uzunluğu (boyutu) nasıl belirlenir.

dizileri kullanma

işlevi kullanıyoruz saymak ():

Elemanların numaralandırılması. Yapıyı kullanarak arabanın tüm öğelerini yineleyebilirsiniz. için veya her biri için:

Diziye yeni bir eleman eklemek (diziye yazmak) için aşağıdaki satırı çalıştırmamız yeterlidir:

Bir ilişkisel dizinin tüm öğeleri üzerinde yineleme şu şekilde gerçekleştirilir:

3. Çok boyutlu diziler, eleman olarak başka dizileri içerir:

Bir 3B dizi de oluşturabiliriz:

PHP'de bir dizi çıktısı almak. İşlevi kullanarak herhangi bir diziyi görüntüleyebilirsiniz. print_r (), Örneğin:

Bu durumda, bir eleman silindiğinde, diğer elemanların indeksleri değişmeden kalır.

Dizilerle çalışmak için işlevler:

Dizileri Sıralama
array_search - Bir dizide bir değer arar

Genellikle bir PHP dizisinin tüm öğelerini gözden geçirmeniz ve her bir öğe üzerinde bir tür işlem gerçekleştirmeniz gerekir. Örneğin, her değeri bir HTML tablosuna yazdırabilir veya her öğeye yeni bir değer atayabilirsiniz.

Bu derste, indekslenmiş ve ilişkili diziler arasında döngü yaparken foreach yapısına bakacağız.

Öğe değerleri üzerinde döngü

Foreach için en basit kullanım durumu, indekslenmiş bir dizideki değerler üzerinde döngü yapmaktır. Temel sözdizimi:

Foreach ($ değeri olarak $ dizisi) (// $ değeri ile bir şeyler yapın) // Burada kod, döngü bittikten sonra yürütülür

Örneğin, aşağıdaki komut dosyası, dizinlenmiş bir dizideki yöneticiler listesinde dolaşır ve her birinin adını yazdırır:

$ yönetmenler = dizi ("Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang"); foreach ($ yönetmen olarak $ yönetmen) (echo $ yönetmen. "
"; }

Yukarıdaki kod çıktı verecektir:

Alfred Hitchcock Stanley Kubrick Martin Scorsese Fritz Lang

Anahtarlar ve değerler üzerinde döngü

İlişkili diziler ne olacak? Bu tür bir diziyi kullanırken, genellikle her bir öğenin anahtarına ve değerine erişmeniz gerekir. foreach yapısının bu görevi gerçekleştirmenin bir yolu vardır:

Foreach ($ anahtar olarak $ dizisi => $ değeri) (// $ tuşu ve / veya $ değeri ile bir şeyler yapın) // Burada kod, döngü bittikten sonra yürütülür

Filmler hakkında bilgi içeren ilişkili bir dizi aracılığıyla bir döngü düzenleme örneği, HTML tanım listesinde her öğenin anahtarını ve değerini görüntüler:

$ film = dizi ("başlık" => "Arka Pencere", "yönetmen" => "Alfred Hitchcock", "yıl" => 1954, "dakika" => 112); Eko "

"; foreach ($ film olarak $ anahtar => $ değer) (eko"
$ anahtarı:
"; Eko"
$ değeri
";) Eko"
";

Bu komut dosyası yürütüldüğünde çıktı verir:

Başlık: Arka Pencere yönetmeni: Alfred Hitchcock Yıl: 1954 dakika: 112

Bir elemanın değerini değiştirme

Peki ya döngü sırasında bir elemanın değerindeki değişim? Böyle bir kod deneyebilirsiniz:

Foreach ($ değeri olarak $ myArray) ($ değeri = 123;)

Ancak, yürütme için çalıştırırsanız, dizideki değerlerin olduğunu göreceksiniz. değiştirme... Bunun nedeni, foreach'in birlikte çalışmasıdır. kopya dizi değerleri, orijinal değil. Bu, orijinal diziyi olduğu gibi bırakır.

Bir dizinin değerlerini değiştirmek için ihtiyacınız olan bağlantı değer üzerinde. Bunu yapmak için, foreach yapısındaki değer değişkeninin önüne & işaretini koymanız gerekir:

Foreach ($ myArray as & $ değeri) ($ değeri = 123;)

Örneğin, aşağıdaki komut dosyası (yönetmen adı) $ direktörler dizisindeki her bir öğe arasında döngü yapar ve adları ve soyadlarını değiş tokuş etmek için PHP patlatma () işlevini ve liste yapısını kullanır:

$ yönetmenler = dizi ("Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang"); // Her öğe için ad biçimini değiştirin foreach ($ direktör olarak & $ direktör) (liste ($ firstName, $ lastName) = patlat ("", $ direktör); $ direktör = "$ lastName, $ firstName";) unset ( $ yönetmen); // foreach ($ direktör olarak $ direktör) nihai sonucunu yazdırın (echo $ direktör. "
"; }

Komut dosyası çıktı:

Hitchcock, Alfred Kubrick, Stanley Scorsese, Martin Lang, Fritz

Komut dosyasının, ilk döngü tamamlandıktan sonra $ yönetmen değişkenini kaldırmak için unset () işlevini çağırdığını unutmayın. Değişkeni daha sonra komut dosyasında farklı bir bağlamda kullanmayı planlıyorsanız, bu iyi bir uygulamadır.

Bağlantıyı silmezseniz, dizideki son öğeye ("Lang, Fritz") rastgele bir referans kodunun daha fazla yürütülmesinde bir risk vardır, eğer $ direktör değişkenini kullanmaya devam ederseniz, bu öngörülemeyen sonuçlara yol açacaktır!

Özet

Bu öğreticide, bir dizinin öğeleri arasında döngü yapmak için PHP foreach yapısının nasıl kullanılacağına baktık. Aşağıdaki konular ele alındı:

  • Bir dizinin elemanları arasında nasıl döngü yapılır
  • Her öğenin anahtarına ve değerine nasıl erişilir?
  • Döngüde yürürken değerleri değiştirmek için bir referans nasıl kullanılır?

(dizideki dizi, matris)
5. Dizilerle çalışma işlevleri (dizide dizi, matris)

PHP Dizisi nedir?

Bu konuya vazgeçilmiş örneklerle başlamak istiyorum. Diyelim ki bazılarını düşünüyoruz insan... O sahip ad, soyad, adres, telefon numarası, cinsiyet, boy, göz rengi vesaire. Tüm bu noktalara ilişkin bilgiler, bir kişi hakkında bir dizi veriye atfedilebilir.

Dizi, belirli noktalar olmaksızın farklı bir türde olabilir. Sadece bir tema olacak. şunu söyleyelim web programlama... Ve unsurlar olarak diller olacak - HTML, CSS, JavaScript, PHP, MySQL... Toplamda 5 element var.

Son örneğe dayanarak, bir dizi varsayalım:

web programlama
1. HTML
2. CSS
3. JavaScript
4. PHP
5. MySQL

Şimdi bu örneğe bakalım ve temel kavramları analiz edelim.

PHP'de dizi eleman sayısı sabit olan, ortak bir konuyla ilgili sıralı olarak yerleştirilmiş homojen veriler kümesidir.

Bu örnekteki dizi çağrılacak web programlama.

Her elemanın kendi sıra konumu, tanımlayıcısı vardır.
dizin(dizi anahtarı) - öğenin tanımlanabileceği sıralı bir sayı veya bir metin değeri.

Yukarıdaki örnekteki endeksler 1'den 5'e kadar sayısal değerler... İndeks 2'ye erişirken, CSS'yi göreceğiz.

PHP dizi örneği

Şimdi yukarıdaki örneğe Rusça değil PHP sözdiziminde bakalım. Diyelim ki dizi daha kısa olarak adlandırılacak - ... Köşeli parantezler dizini ekleyecektir.
Basit bir dizi örneğini ele alalım, burada indekslerin değeri sayısal değerler olacak ve diziyi değişkenlere değer atamış gibi oluşturacağız.

$ web = "HTML";
$ web = "CSS";
$ web = "JavaScript";
$web = "PHP";
$web = "MySQL";

$ ağ; // bu değişken 5 elemanlı bir dizi içeriyor

// dizi elemanlarından birini görüntülemek için dizideki indeksi belirtmek yeterlidir
yankı $ ağ; // PHP çıktısı verecek

Tek boyutlu dizi

İNDEKS DİZİ

Yukarıda, web programlama ile tek boyutlu bir dizi örneğine baktık.
Nadiren bu şekilde oluşturulur. Daha çok dizinin yapısını gösterir. Daha sıklıkla başka bir yönteme başvururlar.

$ web = dizi ("HTML", "CSS", "JavaScript", "PHP", "MySQL");
yankı $ ağ; // "HTML" çıktısı verecek
yankı $ ağ; // "JavaScript" çıktısı verecek
yankı $ ağ; // "PHP" yazdıracak

İndeks değerlerini ayarlamak istiyorsanız aşağıdaki gibi belirtmelisiniz. İmza => bir değere bir indeks atamak için bir işaretçidir veya bir indeks değerine tam tersi.

$ web = dizi (1 => "HTML", 2 => "CSS", 3 => "JavaScript", 4 => "PHP", 5 => "MySQL");
yankı $ ağ; // HTML
yankı $ ağ; // CSS
yankı $ ağ; // PHP
Örnekte, sayma 1'den başlar. Dolayısıyla 0 indeksli değişken boştur.

Bir sonraki örnekte, indeksi belirtmeyeceğiz.

$ gün = "Pazartesi"; // dizin 0
$ gün = "Salı"; // 1
$ gün = "Çarşamba"; // 2
$ gün = "Perşembe"; // 3
$ gün = "Cuma"; // 4
Sıralı dolumun sıfırdan gerçekleştiğini izleyebilirsiniz.

İLİŞKİLENDİRİCİ DİZİ

Genellikle bir dizi öğesi için değişmez bir dizin oluşturmaya ihtiyaç vardır. Yukarıda bahsettiğim gibi, böyle bir indeks Latin harflerinden oluşmalı ve isim tırnak içine alınmalıdır. Bir insan örneğini düşünün.

$ user ["nick"] = "Mantık";
$ user ["isim"] = "Paul";
$ kullanıcı ["yaş"] = "25";
$ user ["seks"] = "Erkek";

$ kullanıcı; // $ user değişkeni, harf indeksli 4 elemanlı bir dizi içeriyor

// dizinin elemanını göster, onun değişmez indeksini belirle
echo $web["isim"]; // "Pavel" yazdıracak
Gördüğünüz gibi, her şey oldukça basit. Yalnızca indeks değeri alıntılanır.

iki boyutlu dizi

Tek Boyutlu Dizi ile ilk bölümü kaçırdıysanız, okumanızı şiddetle tavsiye ederim.
Basitçe söylemek gerekirse, bir dizi içinde bir dizidir. Yani, büyük bir dizinin elemanları farklıdır. Bu tür diziler, betiğin çalışmasını çok yavaşlatır, RAM'i yükler, bu nedenle, bu tür veri gruplarını hızlı bir şekilde işlemek için, Veritabanları oluşturulmuştur (Veritabanı Nedir?), Ama daha sonra bunun hakkında daha fazla bilgi. İki boyutlu bir dizi örneğine bir göz atalım.

// Dünyanın Parçalarının adlarını içeren dizi
$ m = dizi ("Avrupa", "Asya", "Afrika", "Amerika", "Avustralya ve Okyanusya");

// Ülkelerin isimlerini içeren dizi
$ s = dizi ("Rusya", "Ukrayna", "Beyaz Rusya", "Kazakistan");

// Başkent isimleriyle dizi
$ с = dizi ("Moskova", "Kiev", "Minsk", "Astana");

// bir 2B dizi Coğrafya oluştur
$ coğrafya = dizi ($ m, $ s, $ c);
?>
Dahil edilen dizilerde, fark ettiğiniz gibi, farklı sayıda öğe olabilir. Tek boyutlu dizilerle ilgili kısımdan, bir dizinin her elemanının bir indeksi olabileceği sonucu çıktı. Şimdi dahil edilen her dizi için farklı bir değer atayalım.

Bunun için son satırı genişletip aşağıdaki gibi yazacağız.

$ coğrafya = dizi ("Dünyanın Parçaları" => $ m, "Ülkeler" => $ s, "Başkentler" => $ c);

PHP dizileriyle çalışmak için işlevler

Her biri için- döngü sayısının dizi öğelerinin sayısına eşit olduğu dizilerle çalışmak için döngüsel bir işlev.

Aşağıdaki forma sahiptir. PHP Kodu

Foreach ($ anahtarı => $ değeri olarak dizi)
komutlar;
Eh, hemen bir iş örneği

// ünlü IT ile bir dizi oluştur
$ isimler ["Ritchie"] = "Dennis";
$ isimler ["Thompson"] = "Ken";
$ isimler ["Gates"] = "Fatura";
$ isimler ["İşler"] = "Steve";

Foreach ($ anahtar olarak $ adları => $ değeri) (
echo "$ değer $ anahtar";
}
?>
Komut dosyası görüntülenecek

Dennis Ritchie
Ken Thompson
Bill Gates
Steve Jobs
Saymak- bir dizideki öğelerin sayısını döndüren bir işlev.

Yankı sayısı ($ adları); // IT ile olan örneğimizde 4 değerini döndürecek
Çeşit- bir dizinin öğelerini sıralayan bir işlev. Sayısal indeks değerleri için uygundur.
Arsort- bir dizinin öğelerini ters sırada sıralayan bir işlev.

Sırala ($ isimler); // sırayla sıralar. Endeks numaralarında ise uygundur
arsort ($ adları); // ters sırada sırala. Yani, indekslere göre elemanlar 3, 2, 1, 0 sırasına göre olacaktır.
Ayarı kaldır- bir dizinin bir öğesini kaldıran bir işlev.

Ayarlanmadı ($ büyük); // dizi elemanını indeks 2 ile silme
ayarlanmamış ($ büyük); // tüm diziyi sil
dizi_arama- dizi arama işlevi. İki argümanı var. Basitçe söylemek gerekirse, bir dirgen dizisine sahiptir ("ne", nerede)

$ hayvanlar = "köpek";
$ hayvanlar = "kedi";
$ hayvanlar = "kuş";
echo array_search ("kedi", $ hayvanlar); // elemanın indeksini görüntüler - sayı 2
Karıştır- dizi değerlerinin tuşlarını karıştıran bir işlev.

Karıştır ($ hayvanlar); // öğeleri rastgele sırala
Dikkatiniz için teşekkürler!

$ dizi [1] = "PHP";
$ dizi [2] = "MySQL";
$ dizi [3] = "Apache";
?>

Dizi öğeleri, normal değişkenler olarak çift tırnak içinde kullanılabilir, bu nedenle kod

echo "$dizi [1] $dizi [2] $dizi [3]";
?>

$ dizi ["ilk"] = "PHP";
$ dizi ["saniye"] = "MySQL";
$ dizi ["üçüncü"] = "Apache";
?>

Bu durumda, dizi denir ilişkisel ve endeksleri denir anahtarlar... Bir dizi öğesini bir dizede görüntülemek için tırnak işaretleri belirtmeyin (ne çift ne de tek):

echo "$ dizi [ilk] $ dizi [ikinci] $ dizi [üçüncü]";
?>

İlişkisel dizilerin indeksleri olmadığı için, onları geçmek için özel bir döngü türü tanıtıldı - her biri için:

foreach ($ dizi olarak $ anahtarı => $ değeri)
{
echo "$ anahtar = $ değer
" ;
}
?>

Döngünün bir sonucu olarak, üç satır görüntülenecektir.

İlk = PHP
saniye = MySQL
üçüncü = Apache

Her döngüde dizi anahtarına erişmenizi sağlayan "$ key =>" yapısı isteğe bağlıdır ve atlanabilir:

foreach ($ arr olarak $ değeri)
{
yankı "$ değer
" ;
}
?>

Bir dizi işlev ayrıca dizileri döndürmenize izin verir, örneğin işlev dosya () hangi dosyayı okur ve içeriğini bir dizi olarak döndürür. Dizinin her elemanı bir satıra karşılık gelir.

$ dizi = dosya ("metin.txt");
için ($ ben = 0; $ ben< count ($arr ); $i ++)
{
echo $dizi [$ ben]. "
" ;
}
?>

Bir başka kullanışlı özellik de işlevdir. patlatmak () bir dizeyi, her biri dizinin ayrı bir öğesine yerleştirilen birkaç parçaya bölmenize izin verir:

$ dizi = "345|[e-posta korumalı]| http: //www.site | giriş | şifre ";
$ dizi = patlat ("|", $ str);
için ($ ben = 0; $ ben< count ($arr ); $i ++)
{
echo $dizi [$ ben]. "
" ;
}
?>

Komut dosyasının sonucu şöyle görünebilir:

345
[e-posta korumalı]
http://www.site
giriş yapmak
parola

Ayrıca, bunun için belirtilen ayırıcıyı kullanarak bir dizinin öğelerini bir dizede birleştiren bir ters işlev - implode () vardır:

$ dizi = "345";
$ dizi = " [e-posta korumalı]" ;
$ dizi = "http://www.site";
$ dizi = "giriş";
$ dizi = "şifre";
$ str = içe çarpma ("##", $ dizi);
yankı $str; //345##[e-posta korumalı]## http://www.
?>

Yorum Yap

Genel olarak, bir dizgeyi oluşturan pek çok işlev vardır; bunların tümünün ele alınması bu makalenin kapsamı dışındadır.

işlevini kullanarak bir dizinin tek bir öğesini kaldırabilirsiniz. ayarla () ve işlevi kullanarak bir dizinin varlığını kontrol edebilirsiniz. isset ()... 10 elemanlı bir dizi tanımlayalım ve her bir çift elemanı yok edelim.

unset ($ dizi [0], $ dizi [2], $ dizi [4], $ dizi [6], $ dizi [8]);
// Dizi elemanlarının var olup olmadığını kontrol edin
için ($ ben = 0; $ ben< 10 ; $i ++)
{
if (isset ($ dizi [$ i])) echo "$ dizi [$ i] tanımlı
" ;
else echo "Öğe $ dizi [$ i] tanımsız
"
;
}
?>

Komut dosyası aşağıdaki satırlarla sonuçlanacaktır

$ Varış tanımsız
$ Varış tanımlandı
$ Varış tanımsız
$ Varış tanımlandı
$ Varış tanımsız
$ Varış tanımlandı
$ Varış tanımsız
$ Varış tanımlandı
$ Varış tanımsız
$ Varış tanımlandı

işlevi kullanma ayarla () tüm diziyi bir kerede yok edebilirsiniz.

$ dizi = dizi (9, 8, 7, 6, 5, 4, 3, 2, 1, 0);
ayarlanmadı ($ dizi);
if (isset ($ dizi)) yankı "Dizi tanımlı";
başka yankı "Dizi tanımlı değil";
?>

Bundan önce, diziler bir döngü kullanılarak atılırdı, ancak PHP bir diziyi boşaltmak için özel bir işlev sağlar. print_r ()... İşlev, konsol akışının çıktısına odaklanır, bu nedenle sonuçları tarayıcı penceresine gönderirken etiketlerle çerçevelemek daha iyidir

VE
:

$ dizi = "345";
$ dizi = " [e-posta korumalı]";
$ dizi = "http://www.site";
$ dizi = "giriş";
$ dizi = "şifre";
Eko "

";
print_r ($ dizi);
Eko "";
?>

Komut dosyasının sonucu aşağıdaki gibidir:

Dizi
=> 345
=> [e-posta korumalı]
=> http://www.site
=> giriş yap
=> şifre
)

Çok boyutlu diziler

Yalnızca skaler değerler değil, dizilerin kendileri de dizi öğeleri olarak işlev görebilir. Bu durumda sözde çok boyutlu diziler.

Böyle bir tablo elde etmek gerekli olsun:

Bunu yapmak için iki boyutlu bir dizi oluşturalım:

$ dizi = dizi (dizi ("Vasya", "çilingir", 2500),
dizi ('Misha', 'inşacı', 3000),
dizi ('Andrey', 'şoför', 2700));
?>

Şimdi tablo aşağıdaki kod kullanılarak görüntülenebilir:

için ($ ben = 0; $ ben< 3 ; $i ++)
{
için ($j = 0; $j< 3 ; $j ++)
{
yankı "|". $ dizi [$ ben] [$ j];
}
Eko "
" ;
}
?>

Sonuç:

| Vasya | çilingir | 2500
| Mişa | inşaatçı | 3000
| Andrey | şoför | 2700

Ayrıca 3D, 4D vb. kullanabilirsiniz. diziler.

Dizi işlemleri (reçetelerin toplanması)

1) Bir dizideki eleman sayısını belirleme saymak ():

Bir dizi $ adı oluşturalım:

?>

Bir dizideki eleman sayısını belirlemek için aşağıdakileri yapabilirsiniz:

Eko 'Dizideki eleman sayısı- '. saymak ($ ​​adı);
?>

Sonuç:

Dizideki eleman sayısı - 8

2) Dizileri birleştirmek

a) $ a ve $ b olmak üzere iki ilişkisel dizi oluşturalım:

$ a = dizi (“a” => ”aa”, “b” => “bb”);
$ b = dizi (“c” => ”cc”, “d” => “dd”);
?>

Hem $ a dizisinin hem de $ b dizisinin öğelerini içerecek bir $ c dizisi oluşturmak gerekli olsun:

$ a = dizi ("a" => "aa", "x" => "xx");
$ b = dizi ("c" => "cc", "d" => "dd");
$c = $a + $b;
Eko "

"
;

print_r($c);
Eko "
" ;
?>

Sonuç:

Dizi
[a] => aaa
[x] => xx
[c] => cc
[d] => dd
)

b) $ a ve $ b olmak üzere iki sayısal dizi oluşturun:

$a = dizi (10, 20);
$ b = dizi (100, 200, 300, 400, 500);
?>

Artık $ c = $ a + $ b ; yapısını kullanarak bunları birleştirmek mümkün olmayacak. Bunları birleştirmek için işlevi kullanmanız gerekir. dizi_birleştirme ():

$ c = dizi_birleştirme ($ a, $ b);
?>

3) Diziyi sıralama

$ name dizisini kullanalım:

$ isim = dizi ("Patron", "Lentin", "NAV", "Sonsuz", "Ejderhalar", "SiLeNT", "Doktor", "Lynx");
?>

Diziyi alfabetik sıraya göre sıralamak istediğinizi varsayalım, bunun için aşağıdaki kodu kullanabilirsiniz:

sırala ($ adı);
Eko "

"
;

print_r ($ isim);
Eko "
" ;
?>

Sonuç:

Dizi
=> Patron
=> Doktor
=> Ejderhalar
=> Sonsuz
=> mercimek
=> Vaşak
=> NAV
=> SESSİZ
)

$ name dizisinden (en az sayıda karaktere sahip olan) en kısa öğeyi seçmeniz gerektiğini varsayalım, bu durumda kodu kullanabilirsiniz:

$ isim = dizi ("Patron", "Lentin", "NAV", "Sonsuz", "Ejderhalar", "SiLeNT", "Doktor", "Lynx");
$ min = strlen ($ isim [0]);
$ isim = $ isim [0];
için ($ ben = 1; $ ben< count ($name ); $i ++)
{
$ len = strlen ($ isim [$ i]);
eğer ($ len< $min )
{
$ isim = $ isim [$ ben];
$ dak = strlen ($ isim);
}
}
Eko "En küçük uzunluk -"... $ adı;
?>

4) Dizinin içinde hareket etmek

$ num dizisini oluşturalım:

$ num = dizi (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
?>

Bir dizinin öğelerini ters sırada görüntülemek istediğinizi varsayalım, bu durumda kodu kullanabilirsiniz:

$ bitiş = bitiş ($ sayı);
($ sonu) iken
{
yankı $ sonu. "-";
$ bitiş = önceki ($ sayı);
}
?>

Sonuç:

10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 – 1

Yukarıdaki kod değiştirilebilir:

$ sayı = aralık (1, 10);
print_r (array_reverse ($ num));
?>

İşlev aralık (1,10) rastgele öğelerle bir dizi (1,2,3,4,5,6,7,8,9,10) oluşturur. İşlev dizi_ters () bir dizi alır ve öğeleri ters sırada düzenler (10,9,8,7,6,5,4,3,2,1)

Fonksiyonlar sonraki (), her biri () işaretçiyi bir öğe ileri hareket ettirin. İşlev Sıfırla () dizideki 1 öğeye bir işaretçi döndürür. $ num dizisini kullanalım.

Dizi, basit bir anahtar listesi ve basit değerler olmak zorunda değildir. Dizinin her bir öğesi, bir değer olarak başka bir dizi içerebilir ve bu dizi de bir dizi içerebilir, vb. Bu şekilde iki boyutlu ve üç boyutlu diziler oluşturabilirsiniz.

2B diziler

iki boyutlu dizi- diğer dizileri değerler olarak saklayan bir dizi. Dizi () yapıcısını kullanarak iki boyutlu bir dizi oluşturmayı düşünün:

$ çiçekler = dizi (dizi ("güller", 100, 15), dizi ("laleler", 60, 25), dizi ("orkideler", 180, 7);

$ çiçekler dizisi üç dizi içerir. Hatırladığınız gibi, tek boyutlu bir dizinin elemanlarına erişmek için dizi adını ve anahtarını belirtmeniz gerekir. Aynısı, bir istisna dışında iki boyutlu diziler için de geçerlidir: her öğenin iki anahtarı vardır: ilki bir satır seçmek için, ikincisi bir sütun seçmek için.

Bu dizinin öğelerini görüntülemek için, her birine erişimi manuel olarak kaydedebilirsiniz, ancak iç içe döngüler kullanmak daha iyidir:

Öğelere manuel erişim
"; yankı $ çiçekler." fiyat ". $ çiçekler." miktarı ".$ çiçek."
"; yankı $ çiçekler." fiyat ". $ çiçekler." miktarı ".$ çiçek."
"; Eko"

Öğeleri görüntülemek için döngüleri kullanma

"; Eko"
    "; for ($ satır = 0; $ satır< 3; $row++) { echo "
  1. Satır numarası $ satır"; Eko"
      "; for ($ sütun = 0; $ sütun< 3; $col++) { echo "
    • ". $ çiçekler [$ satır] [$ sütun]."
    • ";) Eko"
    "; Eko"
  2. ";) Eko"
"; ?>

Sütun numaraları (varsayılan olarak atanan dizinler) yerine onlara istediğiniz anahtarları verebilirsiniz. Bu amaçla ilişkisel diziler kullanılır. Bir sonraki dizi aynı verileri depolayacaktır, ancak sütunları bilgi ile adlandırmak için tuşlar kullanılır:

$ çiçekler = dizi (dizi ("Ad" => "güller", "Fiyat" => 100, "Miktar" => 15), dizi ("Ad" => "laleler", "Fiyat" => 60, " Miktar "=> 25,), dizi ("Ad "=>" Orkide "," Fiyat "=> 180," Miktar "=> 7);

Anahtarlar, değerlerden birini almanız gereken durumlarda bir diziyle çalışmak için ek kolaylık sağlar. Anlamlı satır ve sütun adlarını kullanarak doğru hücreye başvurarak ihtiyacınız olan verileri kolayca bulabilirsiniz. Bununla birlikte, bu durumda, for döngüsünü kullanarak diziyi sürekli olarak geçme yeteneğimizi kaybederiz.

Yalnızca bir for döngüsü olan alt diziler üzerinde yinelenebiliriz. Onlar da ilişkisel olduklarından, öğelerini yinelemek için foreach döngüsünü kullanmanız veya öğeleri manuel olarak yinelemeniz gerekir:

"güller", "Fiyat" => 100, "Miktar" => 15), dizi ("İsim" => "Laleler", "Fiyat" => 60, "Miktar" => 25,), dizi ("Ad" "=>" orkide "," Fiyat "=> 180," Miktar "=> 7); Eko "

İlişkili bir dizinin öğelerine manuel erişim

"; for ($ satır = 0; $ satır< 3; $row++) { echo $flowers[$row]["Название"]." цена ".$flowers[$row]["Цена"] ." количество ".$flowers[$row]["Количество"]; echo "
";) Eko"

Öğelere erişmek için bir foreach döngüsü kullanma

"; Eko"
    "; for ($ satır = 0; $ satır< 3; $row++) { echo "
  1. Satır numarası $ satır"; Eko"
      "; foreach ($ çiçekler [$ satır] olarak $ anahtar => $ değer) (eko"
    • ".$ değeri."
    • ";) Eko"
    "; Eko"
  2. ";) Eko"
"; ?>

İki boyutlu bir dizi oluşturmak için dizi () yapıcısını kullanmak gerekli değildir, kısa sözdizimini de kullanabilirsiniz - köşeli parantezler:

$ çiçekler = [["İsim" => "Güller", "Fiyat" => 100, "Miktar" => 15], ["İsim" => "Laleler", "Fiyat" => 60, "Miktar" = > 25,], ["Ad" => "Orkide", "Fiyat" => 180, "Miktar" => 7]];

3B diziler

Sadece iki boyutla sınırlı olmak gerekli değildir: bir dizinin elemanları diziler içerebildiği gibi, bu diziler de yeni diziler içerebilir.

Üç boyutlu dizi, genişliği, yüksekliği ve derinliği karakterize eder. İki boyutlu bir diziyi tablo biçiminde temsil ediyorsanız, üç boyutlu dizi bu tabloya katmanlar ekler. Böyle bir dizinin her elemanı bir katmana, satıra ve sütuna atıfta bulunacaktır.

Dizimizi renklerle biraz değiştirirsek, onu üç boyutlu hale getirebiliriz. Aşağıdaki kodda bunu görebilirsiniz üç boyutlu dizi- bir dizi dizi içeren bir dizi:

$ çiçekler = [[["güller", 100, 15], ["laleler", 60, 25], ["orkideler", 180, 7]], [["güller", 100, 15], ["laleler ", 60, 25], [" orkideler ", 180, 7],], [[" güller ", 100, 15], [" laleler ", 60, 25], [" orkideler ", 180, 7]] ];

Bu dizi yalnızca sayısal dizinler içerdiğinden, onu görüntülemek için iç içe döngüler kullanabiliriz:

"; for ($ katman = 0; $ katman< 3; $layer++) { echo "

  • Katman numarası $ katman "; yankı"
      "; for ($ satır = 0; $ satır< 3; $row++) { echo "
    • Satır numarası $ satır "; yankı"
        "; for ($ sütun = 0; $ sütun< 3; $col++) { echo "
      • ". $ çiçekler [$ katman] [$ satır] [$ sütun]."
      • ";) Eko"
      "; Eko"
    • ";) Eko"
    "; Eko"
  • ";) Eko""; ?>