CodeBlanks Logo Icon CodeBlanks

Cevap kontrolü

PHP kursu · Orta seviye · Ders 44/115

Kullanıcının cevabını doğru cevapla karşılaştıran method yazarsın.

Cevabı kontrol eden metot

Soru sınıfına isCorrect(int $choice): bool metodunu ekleyeceksin. Bu metot, kullanıcının seçtiği indeksi doğru cevap indeksiyle karşılaştırır ve true ya da false döndürür.

PHP'de iki değer karşılaştırırken === (katı eşitlik) kullanmak daha güvenlidir. === hem tür hem değer kontrol eder; örneğin 0 == "0" true verir ama 0 === "0" false verir. Soru cevabında indeksleri katı şekilde karşılaştırmak beklenmeyen sonuçları önler.

Katı karşılaştırma ile dönüş

İçeride return $choice === $this->answerIndex; yazarsın. Eğer kullanıcı doğru indeksi seçtiyse true, yanlış seçtiyse false döner.

Bu metodu çağırmak için $q->isCorrect(0) yazarsın; 0 kullanıcının ilk seçeneği işaret ettiği anlamına gelir. Sonucu yazdırırken ternary operatörü işe yarar: echo $q->isCorrect(0) ? "doğru" : "yanlış";. Bu, if-else yerine tek satırda koşullu çıktı verir.

Uygulama isCorrect metodunu ekle

Question sınıfına public function isCorrect(int $choice): bool metodunu ekle. İçinde return $choice === $this->answerIndex; ile katı karşılaştırma yap. Sonra $q örneğinde metodu çağır: son satırı echo $q->isCorrect(0) ? "doğru" : "yanlış"; olarak değiştir.

Örnek çözümü göster
bool { return $choice === $this->answerIndex; } ekle. Son satırı echo $q->isCorrect(0) ? "doğru" : "yanlış"; olarak değiştir.
Örnek çözüm:
<?php
// Question sınıfına cevap kontrolü ekle
class Question {
    public string $text = "";
    public array $options = [];
    public int $answerIndex = 0;

    public function __construct(string $text, array $options, int $answerIndex) {
        $this->text = $text;
        $this->options = $options;
        $this->answerIndex = $answerIndex;
    }

    public function isCorrect(int $choice): bool {
        return $choice === $this->answerIndex;
    }
}

$q = new Question("PHP nedir?", ["Betik dili", "Veritabanı", "Tarayıcı"], 0);
echo $q->isCorrect(0) ? "doğru" : "yanlış";

Kendini test et

  1. === ile == arasındaki fark nedir?

    • İkisi de aynıdır, fark yoktur
    • === yalnızca metinler için kullanılır
    • === tür ve değer kontrol eder, == yalnızca değer
    • == tür kontrol eder, === değer kontrol eder
    Cevabı göster

    === tür ve değer kontrol eder, == yalnızca değer — Doğru. === hem tür hem değer kontrol eder; == yalnızca değer kontrol eder ve tür dönüşümü yapabilir.

  2. isCorrect return ifadesini tamamla

    public function isCorrect(int $choice): bool {
        return ____;
    }
    Cevabı göster
    public function isCorrect(int $choice): bool {
        return $choice === $this->answerIndex;
    }
  3. Karşılaştırma kavramlarını eşleştir

    ===
    Katı eşitlik
    ==
    Gevşek eşitlik
    bool
    Mantıksal tür
    return
    Değer döndürür

Orta seviye bölümündeki tüm dersler