İç İçe Döngülerle Yineleme
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 30 / 68.
2D dizilerle çalışırken, genellikle her bir öğeyi işlemeniz gerekir; bu da her bir satırı ve ardından o satır içindeki her bir sütunu ziyaret etmeyi gerektirir. İşte bu noktada iç içe döngüler temel hale gelir; tüm ızgara yapısını sistematik bir şekilde dolaşmak için bir döngüyü diğerinin içinde kullanırsınız.
Dış döngü 2B dizinin her bir satırı üzerinde yinelenirken, iç döngü mevcut satır içindeki her bir öğeyi işler. İşte bunun bir foreach döngüsü ile nasıl çalıştığı:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>İndisler üzerinde daha fazla kontrole ihtiyaç duyduğunuzda geleneksel for döngülerini de kullanabilirsiniz. Bu yaklaşım size hem satır hem de sütun konumlarına erişim sağlar:
<?php
for ($row = 0; $row < count($schedule); $row++) {
for ($col = 0; $col < count($schedule[$row]); $col++) {
echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
}
}
?>Bu iç içe döngü yapısı, ister veri görüntülüyor, ister hesaplamalar yapıyor, ister tüm ızgara yapısı boyunca belirli değerleri arıyor olun, 2D dizileri tamamen işlemek için temeldir.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Görev
KolayBir girdi alacaksınız: JSON formatında bir sınıf oturma düzenini temsil eden 2 boyutlu bir dizi. Her iç dizi bir koltuk sırasını temsil eder ve her öğe ya bir öğrencinin adını ya da boş koltuklar için boş bir dize içerir. Girdiyi okuyun, JSON dizesini 2 boyutlu bir diziye dönüştürün, tüm oturma düzenini dolaşmak için iç içe döngüler kullanın ve her öğrencinin adını konumuyla birlikte şu formatta yazdırın: Row X, Seat Y: Name
Boş koltukları (boş dizeler) atlayın ve yalnızca dolu koltuklar için bilgileri yazdırın. Sıralar ve koltuklar 1'den başlayarak numaralandırılmalıdır (0'dan değil).
Girdi formatı: Oturma düzenini temsil eden bir JSON dizisi içeren tek bir satır (örnek: [["Alice","Bob",""],["","Charlie","Diana"],["Eve","","Frank"]])
Beklenen çıktı: Her dolu koltuk, Row X, Seat Y: Name formatında ayrı bir satıra yazdırılır; burada X sıra numarası ve Y koltuk numarasıdır (her ikisi de 1'den başlar)
Kopya kağıdı
2D (iki boyutlu) bir dizideki her öğeyi işlemek için iç içe döngüler kullanın. Dış döngü satırlar arasında gezinirken, iç döngü her satırdaki öğeleri işler.
foreach döngülerini kullanma:
<?php
$schedule = [
["Meeting", "Lunch", "Presentation"],
["Training", "Review", "Planning"],
["Workshop", "Break", "Demo"]
];
foreach ($schedule as $day) {
foreach ($day as $appointment) {
echo $appointment . "\n";
}
}
?>Dizin erişimi için geleneksel for döngülerini kullanma:
<?php
for ($row = 0; $row < count($schedule); $row++) {
for ($col = 0; $col < count($schedule[$row]); $col++) {
echo "Day " . ($row + 1) . ", Time " . ($col + 1) . ": " . $schedule[$row][$col] . "\n";
}
}
?>Kendin dene
<?php
// JSON girişini oku
$input = trim(fgets(STDIN));
// JSON dizesini 2 boyutlu diziye dönüştür
$seating = (array)json_decode($input, true);
// YAPILACAK: Kodunuzu aşağıya yazın
// Satırlar ve koltuklar arasında gezinmek için iç içe döngüler kullanın
// Boş koltukları atlamayı ve satırları/koltukları 1'den başlayarak numaralandırmayı unutmayın
?>Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Fonksiyonlar
Anonim FonksiyonlarClosure'lar ve 'use'Ok Fonksiyonları (Arrow Functions)Geri Çağırma (Callback) Fonksiyonları'call_user_func' KullanımıDeğişken FonksiyonlarReferans ile Değer AktarımıÖz Yinelemeli (Recursive) FonksiyonlarÖzet: Fonksiyon Karması4Çok Boyutlu Diziler
2 Boyutlu Dizi Oluşturma2 Boyutlu Dizi Elemanlarına Erişme2 Boyutlu Dizi Elemanlarını Değiştirmeİç İçe Döngülerle Yineleme2 Boyutlu İlişkisel DizilerÖzet: Basit Izgara Egzersizi2İleri Düzey Dizi İşlemleri
'array_push' ile Ekleme'array_pop' ile Silme'array_unshift' ile Ekleme'array_shift' ile Silmeİndisli Dizileri Birleştirmeİlişkisel Dizileri Birleştirme'array_slice' ile Kesit Alma'in_array' ile Değer Kontrolü'array_search' ile Anahtar AramaÖzet: Çalma Listesi Alıştırması3Dizileri Sıralama
İndisli Dizileri Artan Sırada Sıralamaİndisli Dizileri Azalan Sırada Sıralamaİlişkisel Dizileri Değere Göre Sıralamaİlişkisel Dizileri Anahtara Göre SıralamaDoğal Sıralama (Natural Order)'usort' ile Özel SıralamaÖzet: Liderlik Tablosu Sıralama