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.
Görev
KolayGiriş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:
- Dize değeri tam sayıya gevşek karşılaştırma kullanarak eşit mi diye kontrol et (
==) - Dize değeri tam sayıya katı karşılaştırma kullanarak eşit mi diye kontrol et (
===) - Dize değeri tam sayıya gevşek karşılaştırma kullanarak eşit değil mi diye kontrol et (
!=) - 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" == 42true'dur (tür dönüştürmesinden sonra değerler eşittir)"42" === 42false'tur (dize vs tam sayı - farklı türler)"42" != 42false'tur (değerler eşittir)"42" !== 42true'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 (!==)
?>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
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators