🔥 با کمک هوش مصنوعی در کمتر از 6 ماه فول‌استک شوید ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ باور آژند
سوال در مورد ===
افسانه نواب حل شده توسط افسانه نواب

سلام، لطفا کد زیر رو ببینید:

<?php
$m = 20;   #int
$n = 30;   #int
    var_dump($n == $m);
    echo '<br>';
    var_dump($n === $m);
?>

پاسخ سطر اول باید false باشه، دلیل: چون 20 برابر 30 نیست.

پاسخ سطر دوم باید true باشه، دلیل: چون هر دو integer هستن.

 - ولی پاسخ هر دو سطر تو خروجی false نشون داده می‌شه! چرا؟؟؟

پاسخ رو یافتم.

درحالت === هم مقدار هم نوع کنترل میشه، یعنی هم integer بودن هم 30 بودن باید یکی باشه. (به‌عبارتی دقیقا باید یکی باشند).

اگر اشتباه می‌کنم بفرمایید. ممنون.

باور آژند ۱۹ آبان ۱۳۹۹، ۱۹:۱۶

سلام 

در حالت == تنها مقدار چک میشه و تایپ چک نمیشه اما در حالت === هم مقدار متغیر و هم تایپ اون چک میشه و به همین دلیل هستش که شما تو حالت === هم false دریافت می‌کنید درواقع چه تایپ و چه مقدار اگر با هم یکی نباشند در هر دو حالت شما false رو دریافت میکنید.

آقای برزو روستا ۱۹ آبان ۱۳۹۹، ۱۹:۴۸

سلام و احترام

زمانی که شما از عملگر == استفاده میکنید این به معنی است که شما 2 مقدار را با هم بررسی میکنید اما وقتی که شما از عملگر === استفاده میکنید هم مقادیر درون آن دو متغیر را بررسی میکنید هم نوع داده آن‌ها که شبیه به هم باشند. برای مثال جفت آن‌ها integer یا string و ... باشند

بهترین پاسخ
افسانه نواب ۲۰ آبان ۱۳۹۹، ۰۷:۵۹

سلام یه مثال میزنم شاید کمک کنه به دوستان

$n1 = 12;
$n2 = 12;
$n3 = "12";
var_dump($n1 == $n2);
// true
var_dump($n1 === $n2);
// true
var_dump($n1 == $n3);
// true
var_dump($n1 === $n3);
// false

 

 

سپندار توسلی ۱۶ بهمن ۱۳۹۹، ۱۱:۳۲