PHP Dizileri Üzerinden Döndürmek İçin Foreach Kullanma

Diziler arasında dolaşmanın oldukça kolay bir yolu var: Foreach Yapısı. Bu yazımızda , Foreach'ın temel söz dizimini öğrenecek ve hem indekslenmiş hem de ilişkisel diziler arasında nasıl döngü kullanacağınızı sizlere açıklayacağız.

PHP Dizileri Üzerinden Döndürmek İçin Foreach Kullanma

Genellikle, bir PHP dizisindeki tüm ögeler arasında ilerlemeniz gerekir. Böylece her bir ögenin değeri ile bir şeyler yapabilirsiniz. Örneğin, bir HTML tablosundaki her bir değeri görüntülemek veya her bir ögeye yeni bir değer vermek isteyebilirsiniz.

Count () kullanarak PHP dizi ögelerini saymak için, bir dizi içinde döngü oluşturarak bir for döngüsünü count() işleviyle birlikte nasıl kullanabileceğinizi görmüştük. Ancak, diziler arasında dolaşmanın daha kolay bir yolu var: foreach yapısı.

Bu yazımızda , foreach'ın temel sözdizimini öğrenirsiniz ve hem indekslenmiş hem de ilişkisel diziler arasında nasıl döngü kullanacağınızı görürsünüz.

Öge Değerleri Arasında Döngü
Foreach kullanmanın en basit yolu, indeksli bir dizideki değerler arasında dolaşmaktır. İşte temel sözdizimi:
 

foreach ( $array as $value ) {
  // Do stuff with $value
}
// This code runs after the loop finishes

Örneğin, aşağıdaki komut dosyası dizinlenmiş bir dizideki film yönetmenleri listesinde dolaşarak her yönetmenin adını olduğu gibi gösterir:

$directors = array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang" );
foreach ( $directors as $director ) {
  echo $director . "<br />";
}

Yukarıdaki komut dosyası aşağıdaki çıktıyı üretir:
 

Alfred Hitchcock
Stanley Kubrick
Martin Scorsese
Fritz Lang

Anahtarlar ve Değerler Arasında Döngü

Şimdilik çok iyi, peki ya ilişkisel diziler? Bu tür dizilerle, genellikle her bir ögenin anahtarına ve değerine erişmek istersiniz. Neyse ki foreach, sadece bunu yapmak için bir yol sunar:
foreach ( $array as $key => $value ) {
 

  // Do stuff with $key and/or $value
}
// This code runs after the loop finishes

İlişkili bir dizi film bilgisi arasında dolaşan her bir ögenin anahtarını ve değerini, bir HTML tanımı listesinde görüntüleyen bir örnek:

$movie = array( "title" => "Rear Window",
                "director" => "Alfred Hitchcock",
                "year" => 1954,
                "minutes" => 112 );
echo "<dl>";
foreach ( $movie as $key => $value ) {
  echo "<dt>$key:</dt>";
  echo "<dd>$value</dd>";
}
echo "</dl>";

Bu komut aşağıdakileri görüntüler:
 

title:
    Rear Window
director:
    Alfred Hitchcock
year:
    1954
minutes:
    112

Öge Değerlerini Değiştirme

Şimdiye kadar sadece ögenin değerlerini okudunuz, fakat ya döngü olarak değerleri değiştirmek istiyorsanız? Böyle bir şey deneyebilirsiniz:
 

foreach ( $myArray as $value ) {
  $value = 123;
}

Ancak bunu yaparsanız, dizi değerlerinin değişmediğini göreceksiniz. Bunun sebebi foreach, orijinal diziden ziyade dizi değerlerinin bir kopyası üzerinde çalışmaktadır. Böylece orijinal dizi dokunulmaz kalır.

Dizi değerlerini değiştirmek için değerlere başvurmanız gerekir. Bunu foreach yapısındaki değer değişkeninden önce bir "(&)" işareti koyarak yapabilirsiniz:
 

foreach ( $myArray as &$value ) {
  $value = 123;
}

$ değer sonra orijinal dizideki element değerine referans olur, bu da elementi $ değerine yeni bir değer atayarak değiştirebileceğiniz anlamına gelir.

Başvuru, değerin bir kopyası yerine orijinal değere işaretçidir. Biraz Windows'ta kısayol veya Mac OS'de takma ad gibi.

Örneğin, aşağıdaki komut dosyası $directors dizisindeki her bir yönetici arasında dolaşır ve PHP'nin explode() işlevini ve list yapısını kullanarak yönetmenin ilk ve soyadını tersine çevirir:
 

$directors = array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang" );
// Change the name format for each element to "last, first"
foreach ( $directors as &$director ) {
  list( $firstName, $lastName ) = explode( " ", $director );
  $director = "$lastName, $firstName";
}
unset( $director );
// Output the final array
foreach ( $directors as $director ) {
  echo $director . "<br />";
}

Bu komut dosyası aşağıdakileri çıkarır:

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

Komutun ilk döngüde referans olarak kullanıldıktan sonra $ director değişkenini silmek için unset() ögesini çağırdığına dikkat edin. Değişkeni daha sonra farklı bir bağlamda kullanmak isteyebileceğinizi düşünüyorsanız, bu her zaman iyi bir fikirdir.

Referansı silmezseniz, daha sonra $director değişkenini sık sık beklenmedik sonuçlarla kullandığınızda, dizideki son ögeye yanlışlıkla (“Lang, Fritz”) gönderme yapma riskini alırsınız!

Merak ediyorsanız, dizi değerlerini yalnızca foreach döngüsünde değiştirebilirsiniz. Dizi tuşlarını değiştiremezsiniz.

Bu makalede, bir dizideki ögeler arasında gezinmek için PHP’nin foreach yapısını nasıl kullandığınızı gördünüz. Madde madde görelim;

  • Dizi elemanları arasında döngü
  • Her bir ögenin döngü içindeki anahtarına ve değerine nasıl erişilir?
  • Dizi içinde dolaşırken dizi değerlerini değiştirmek için referansları kullanma

Artık tüm diziler üzerinde çalışan, ilerleyen dizi değerlerini okuyan veya değiştiren kodları kolayca oluşturabilirsiniz. Diğer yazılarımızda görüşmek üzere!