Görev tamamlama
Bir görevi tamamlandı olarak işaretlemek için ilişkisel dizi kullanırsın.
Görevi tamamlandı işaretleme
Şu an üç görevimiz var ama hepsi bekliyor. Bir görevi tamamlanmış yapmak için ilgili görevin done anahtarını true yaparız. Görev dizideki yerini indeksle buluruz: $tasks[0] ilk görev, $tasks[1] ikinci görev.
İlişkisel dizi içindeki bir anahtara ulaşmak için köşeli parantez iki kere kullanılır: $tasks[$index]["done"]. Buna true atadığında görev tamamlanmış olur ve listTasks onu [x] ile gösterir.
Bu işlemi de fonksiyona paketleyip completeTask($tasks, $index) şeklinde çağıracağız. Geçersiz indeksi güvenli biçimde ele almak için isset ile kontrol ekleriz.
completeTask fonksiyonu
Fonksiyon imzası function completeTask(array $tasks, int $index): array. İkinci parametre int $index ile tamamlanacak görevin sırasını alırız.
Gövdede önce isset($tasks[$index]) ile o indekste bir görev olup olmadığını kontrol ederiz. Varsa $tasks[$index]["done"] = true ile tamamlanma işaretini koyarız. Yoksa hiçbir şey yapmayız; böylece geçersiz indeks hataya dönüşmez. Son olarak return $tasks; ile diziyi geri veririz.
Uygulama completeTask fonksiyonunu yaz ve 1. görevi tamamla
completeTask fonksiyonunu tanımla: imza function completeTask(array $tasks, int $index): array. Gövdede if (isset($tasks[$index])) ile kontrol et; içinde $tasks[$index]["done"] = true; yaz. Sonra return $tasks; ile diziyi geri ver. Fonksiyondan sonra $tasks = completeTask($tasks, 0); ile ilk görevi tamamla ve listTasks($tasks); ile listeyi yeniden yazdır. Böylece çıktıdaki son üç satır 1. Ekmek al [x], 2. Süt al [ ], 3. Çöpü at [ ] olur.
Örnek çözümü göster
function completeTask(array $tasks, int $index): array. Gövde: if (isset($tasks[$index])) { $tasks[$index]["done"] = true; } return $tasks;. Sonra $tasks = completeTask($tasks, 0); ve 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);
// completeTask fonksiyonunu yaz ve 1. görevi tamamla
function completeTask(array $tasks, int $index): array {
if (isset($tasks[$index])) {
$tasks[$index]["done"] = true;
}
return $tasks;
}
$tasks = completeTask($tasks, 0);
listTasks($tasks);
Kendini test et
-
Bir görevi 'tamamlandı' işaretleme için ne yaparsın?
- Diziden görevi silerim
- Yeni bir görev eklerim
- Görevin başlığını değiştiririm
- İlgili görevin 'done' anahtarını true yaparım
Cevabı göster
İlgili görevin 'done' anahtarını true yaparım — Doğru. done anahtarını true yapmak görevi tamamlanmış işaretlemin tek doğru yoludur.
-
done anahtarına true ata
if (isset($tasks[$index])) { ____; }Cevabı göster
if (isset($tasks[$index])) { $tasks[$index]["done"] = true; } -
İlişkisel dizi kavramlarını eşle
- $tasks[$index]
- ilgili görevi seçer
- "done"
- tamamlanma anahtarı
- true
- tamamlandı değeri
- isset(...)
- anahtar var mı kontrol eder