💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ رنجبردوست
سوال در مورد ===
امیر صالحی حل شده توسط امیر صالحی

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

<?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

 

 

محمد محمدی ۱۶ بهمن ۱۳۹۹، ۱۱:۳۲