مشکل در مبحث ==!

پرسیده شده
فعالیت 1499 روز پیش
دیده شده 974 بار
0

سلام استاد میشه در این مورد یک توضیحی بدید:

<?php
$p=1;
$s='2';
var_dump($p !== $s);
?>

من دوبار این قسمت ویدیو را دیدم و خیلی عالی تدریس میکنید ولی من متوجه نشدم.اگه میشه لطف کنید یک توضیحی بدید و یا یک مقاله ترجیحا فارسی معرفی کنید.

باتشکر

فایل پیوست

پویا کاوه
پویا کاوه

2 فروردین 99

7

مورد تایید استاد

حذف شده

سلام.

عملگر === چک میکنه آیا دو طرف تساوی، عین هم(مثل هم) هستن؟

عملگر !== چک میکنه آیا دو طرف،  عین هم نیستن؟

برای مثال:

1 === '1'

اگر چشمی هم بخوایم نظر بدیم، دو طرف تساوی، مثل هم نیستن. عملوند سمت چپ type اش integer هست و عملوند سمت راستی type اش string هست. جواب این مقایسه false هست.

نکته: عملگر === هم مقدار را چک میکند هم تایپ.(پس در مقایسه === یا !== دو فاکتور مقدار و نوع چک میشه)

اما جواب مقایسه پایین true هست:

1 !== '1'

چون دو عملوند مثل هم نیستند.(از نظر تایپ)

 

حالا مثال شما:

var_dump(1 !== '2');

این مثال که کلا شبیه هم نیستن، چه از نظر مقدار و چه از نظر type.

 

حالا یه مثال هم با == بیارم:

1 == '1'

در عملگرهای مقایسه ای(بجز === و !==) خود PHP بصورت اتومات، قبل از مقایسه عمل تبدیل نوع(type casting) رو انجام میده. در مقایسه بین رشته و عدد صحیح، نوع رشته تبدیل به عدد صحیح میشود. پس در اینجا رشته ی ۱ تبدیل به integer میشه و بعد از تبدیل نوع، مقایسه صورت میگیره. بنابراین جواب مقایسه ی بالا، true میباشد.

 

جواب این مقایسه چی میشه:

var_dump(7 == '7Learn');  // true

 

داخل این مقاله تمام جزئیات عملگرها اومده.

فایل پیوست

محسن موحد

توسط

محسن موحد

2 فروردین 99