سلام، لطفا کد زیر رو ببینید:
<?php
$m = 20; #int
$n = 30; #int
var_dump($n == $m);
echo '<br>';
var_dump($n === $m);
?>
پاسخ سطر اول باید false باشه، دلیل: چون 20 برابر 30 نیست.
پاسخ سطر دوم باید true باشه، دلیل: چون هر دو integer هستن.
- ولی پاسخ هر دو سطر تو خروجی false نشون داده میشه! چرا؟؟؟
سلام و احترام
زمانی که شما از عملگر == استفاده میکنید این به معنی است که شما 2 مقدار را با هم بررسی میکنید اما وقتی که شما از عملگر === استفاده میکنید هم مقادیر درون آن دو متغیر را بررسی میکنید هم نوع داده آن ها که شبیه به هم باشند. برای مثال جفت آن ها integer یا string و ... باشند
پاسخ رو یافتم.
درحالت === هم مقدار هم نوع کنترل میشه، یعنی هم integer بودن هم 30 بودن باید یکی باشه. (بهعبارتی دقیقا باید یکی باشند).
اگر اشتباه میکنم بفرمایید. ممنون.
سلام
در حالت == تنها مقدار چک میشه و تایپ چک نمیشه اما در حالت === هم مقدار متغیر و هم تایپ اون چک میشه و به همین دلیل هستش که شما تو حالت === هم false دریافت می کنید درواقع چه تایپ و چه مقدار اگر با هم یکی نباشند در هر دو حالت شما false رو دریافت میکنید.
سلام یه مثال میزنم شاید کمک کنه به دوستان
$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