CodeBlanks Logo Icon CodeBlanks

Görev listeleme

PHP kursu · Başlangıç · Ders 85/116

foreach ile görevleri numaralandırıp listeler sin.

Görevleri listeleme

Görevleri ekrana yazdırmak için foreach döngüsünü kullanırız. foreach ($tasks as $i => $task) yazdığında PHP her dönüşte görevin indeksini $i'ye ve görevin kendisini $task'a atar.

İndeks 0'dan başlar, ama kullanıcılar 1'den başlayan numaralar görmek ister. Bu yüzden ($i + 1) ile numarayı bir ileri alırız. Görevin başlığına $task["title"] ile ulaşırız.

Listeyi fonksiyona paketleyip listTasks($tasks) şeklinde çağıracağız; böylece istediğimiz her yerde yeniden kullanabiliriz.

Satır biçimi ve done işareti

Her görev satırını 1. Ekmek al [ ] biçiminde yazdırırız. Köşeli parantez içindeki işaret, görevin tamamlandı durumunu gösterir: [ ] bekliyor, [x] tamamlandı.

Bu işareti $task["done"] değerine göre seçeriz. if ($task["done"]) koşulu true olduğunda işaret [x], değilse [ ] olur. Böylece listeyi her çağırdığımızda güncel durumu görürüz.

Uygulama listTasks fonksiyonunu yaz ve çağır

listTasks fonksiyonunu tanımla: imza function listTasks(array $tasks): void. Gövdede foreach ($tasks as $i => $task) ile diziyi gez. Her görev için önce $mark = "[ ]"; if ($task["done"]) ise $mark = "[x]". Sonra echo ($i + 1) . ". " . $task["title"] . " " . $mark . "\n"; satırını yaz. Fonksiyondan sonra listTasks($tasks); çağrısını yap. Çıktı üç satır olur: 1. Ekmek al [ ], 2. Süt al [ ], 3. Çöpü at [ ].

Örnek çözümü göster
function listTasks(array $tasks): void. Gövdede foreach ($tasks as $i => $task) { $mark = "[ ]"; if ($task["done"]) { $mark = "[x]"; } echo ($i + 1) . ". " . $task["title"] . " " . $mark . "\n"; }. Sonra listTasks($tasks);.
Örnek çözüm:
<?php
// Görev dizisini başlat ve ilk görevi ekle
$tasks = [];
$tasks[] = ["title" => "Ekmek al", "done" => false];
echo "Görev sayısı: " . count($tasks) . "\n";
// addTask fonksiyonunu tanımla ve iki görev daha ekle
function addTask(array $tasks, string $title): array {
    $tasks[] = ["title" => $title, "done" => false];
    return $tasks;
}
$tasks = addTask($tasks, "Süt al");
$tasks = addTask($tasks, "Çöpü at");
echo "Görev sayısı: " . count($tasks) . "\n";
// listTasks fonksiyonunu yaz ve çağır
function listTasks(array $tasks): void {
    foreach ($tasks as $i => $task) {
        $mark = "[ ]";
        if ($task["done"]) {
            $mark = "[x]";
        }
        echo ($i + 1) . ". " . $task["title"] . " " . $mark . "\n";
    }
}
listTasks($tasks);

Kendini test et

  1. foreach ($tasks as $i => $task) ifadesinde $i nedir?

    • Görevin dizideki indeksi (0'dan başlar)
    • Görevin başlığı
    • Görevin done değeri
    • Dizinin toplam uzunluğu
    Cevabı göster

    Görevin dizideki indeksi (0'dan başlar) — Doğru. $i, dizideki sırayı veren indeks; ilk görev için 0'dır.

  2. foreach başlangıcını tamamla

    foreach ($tasks as ____) {
        echo $task["title"];
    }
    Cevabı göster
    foreach ($tasks as $i => $task) {
        echo $task["title"];
    }
  3. foreach parçalarını eşle

    foreach
    diziyi gezer
    as $i => $task
    indeks ve değeri verir
    $task["title"]
    görevin başlığı
    ($i + 1)
    1'den başlayan numara

Başlangıç bölümündeki tüm dersler