Menu
Coddy logo textTech

Equality & Identity

Coddy'nin PHP Journey'sinin Temeller bölümünün bir parçası — ders 24 / 71.

PHP, değerlerin eşit olup olmadığını kontrol etmenin iki yolunu sağlar: eşitlik operatörü (==) ve kimlik operatörü (===). Farkı anlamak, güvenilir kod yazmak için kritik öneme sahiptir.

Eşitlik operatörü (==) değerleri aynı türe dönüştürdükten sonra karşılaştırır. Buna "gevşek karşılaştırma" denir:

<?php
var_dump(5 == "5");    // bool(true) - dize sayıya dönüştürüldü
var_dump(0 == false);  // bool(true) - her ikisi de 0 olur
var_dump(1 == true);   // bool(true) - her ikisi de 1 olur
?>

Kimlik operatörü (===) hem değeri ve türü karşılaştırır. Hiçbir dönüşüm gerçekleşmez, bu yüzden her ikisi de tam olarak eşleşmelidir:

<?php
var_dump(5 === "5");   // bool(false) - tamsayı vs dize
var_dump(5 === 5);     // bool(true) - aynı tür ve değer
var_dump(0 === false); // bool(false) - tamsayı vs bool
?>

"Eşit olmayan" karşılaştırmalar için != (gevşek) veya !== (katı) kullanın:

<?php
var_dump(5 != "5");    // bool(false) - değerler eşit
var_dump(5 !== "5");   // bool(true) - türler farklı
?>

En iyi uygulama olarak, beklenmedik tür dönüştürme sürprizlerini önlemek için === ve !== tercih edin.

challenge icon

Görev

Kolay

Girişten iki değer oku: bir sayı (dize olarak) ve bir tam sayı.

Eşitlik ve kimlik operatörlerini kullanarak aşağıdaki karşılaştırmaları değerlendir ve her birinin sonucunu var_dump() kullanarak yazdır, her biri yeni bir satırda:

  1. Dize değeri tam sayıya gevşek karşılaştırma kullanarak eşit mi diye kontrol et (==)
  2. Dize değeri tam sayıya katı karşılaştırma kullanarak eşit mi diye kontrol et (===)
  3. Dize değeri tam sayıya gevşek karşılaştırma kullanarak eşit değil mi diye kontrol et (!=)
  4. Dize değeri tam sayıya katı karşılaştırma kullanarak eşit değil mi diye kontrol et (!==)

Not: İlk değeri dize olarak tut (dönüştürme). İkinci değeri tam sayıya dönüştür.

Örnek:

Eğer girdiler 42 ve 42 ise, çıktı şu olmalı:

bool(true)
bool(false)
bool(false)
bool(true)

Açıklama:

  • "42" == 42 true'dur (tür dönüştürmesinden sonra değerler eşittir)
  • "42" === 42 false'tur (dize vs tam sayı - farklı türler)
  • "42" != 42 false'tur (değerler eşittir)
  • "42" !== 42 true'dur (türler farklıdır)

Kopya kağıdı

PHP, değerleri karşılaştırmak için iki yol sunar:

Eşitlik operatörü (==) - karşılaştırmadan önce değerleri aynı türe dönüştüren gevşek karşılaştırma:

<?php
var_dump(5 == "5");    // bool(true) - string converted to number
var_dump(0 == false);  // bool(true) - both become 0
var_dump(1 == true);   // bool(true) - both become 1
?>

Kimlik operatörü (===) - hem değeri hem de türü kontrol eden katı karşılaştırma:

<?php
var_dump(5 === "5");   // bool(false) - int vs string
var_dump(5 === 5);     // bool(true) - same type and value
var_dump(0 === false); // bool(false) - int vs bool
?>

Eşit olmayan operatörler:

<?php
var_dump(5 != "5");    // bool(false) - values are equal (loose)
var_dump(5 !== "5");   // bool(true) - types differ (strict)
?>

En iyi uygulama: Beklenmedik tür dönüşümünden kaçınmak için === ve !== kullanın.

Kendin dene

<?php
// Girişi oku
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));

// TODO: Kodunuzu buraya yazın
// Her karşılaştırmanın sonucunu yeni bir satıra yazdırmak için var_dump() kullanın:
// 1. Gevşek eşitlik (==)
// 2. Katı eşitlik (===)
// 3. Gevşek eşitsizlik (!=)
// 4. Katı eşitsizlik (!==)

?>
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler