PDA

View Full Version : سوال: کدام حالت برای مقایسه دو مقدار صحیح تر است؟ (منظور مقایسه برابری یا کوچکتر و بزرگتر و ... در PHP است



hgfhjgjh
پنج شنبه 02 خرداد 1398, 19:32 عصر
با عرض سلام و خسته نباشید خدمت شما دوستان عزیز
من در حال کدنویسی یک سایت هستم با PHP و در آن از JS و JQuery هم استفاده کردم
طبق بررسی های مختلف دیدم که در بسیاری از کدهای موجود در اینترنت جهت مقایسه اول مقدار را نوشتند و بعد متغیر را درج کردند و در بسیاری دیگر برعکس هست و حالات مختلفی را دیدم؛ حتی ابزارهای minify کننده جاوا هم هر کدوم یک حالت متفاوت را ایجاد میکنند؛ برای درک بهتر سوال من به نمونه های زیر دقت بفرمایید:




$variable==="TEXT"
"TEXT"====$variable

$variable===true
true===$variable

$variable===1000
1000===$variable

$variable>=100
100<=$variable

$variable<=100
100>=$variable

$variable>100
100<$variable

$variable<100
100>$variable



حالا کدام مورد صحیح تر است؟ هم برای کد PHP و هم برای کد جاوا و جیکوئری و ...
بعضی از ابزارهای minify و همچنین برخی از سورسهای موجود در گیتهاب، زمانی که از عملگرهای بزرگتر و کوچکتر استفاده شده باشه همیشه مقدار عددی رو اول و متغیر را بعد از اون قرار میدهند و یا زمان استفاده از true و false همیشه مقدار true یا false را اول قرار میدهند و بعد == و سپس مقدار متغیر و ... را درج میکنند؛ همچنین وقتی دو متغیر داریم در هر دو سمت عملگر کدام مورد باید اول باشه و کدام دوم؟ میخواستم بدونم کدام حالت صحیح تر هست یا اینکه اصلاً با هم فرقی دارند یا نه؟ و چرا بعضی از افراد مقدار را اول و متغیر را دوم مینویسند؟؟؟؟

peymang
جمعه 03 خرداد 1398, 01:17 صبح
"===" اگر نوع و مقدار اونها مساوی باشه مقدار true میشه
"==" اگر مقدار اونها مساوی باشه true برمیگردونه

این لینک رو ببین https://www.php.net/manual/en/language.operators.comparison.php

plague
جمعه 03 خرداد 1398, 09:27 صبح
به این میگن yoda condition
تو جنگ ستارگان یکی بود به اسم یودا که چیزا رو برعکس میگفت اسمش رو گزاشتن رو این

فرقی ندارن با هم عملا ... فقط یودا خوانایی رو میاره پایین برای همین کمتر استفاده میشه
البته مزیتش هم اینه که اگه یادت بره 2 تا مساوی بزاری و یدونه بزاری
if($cond = 2 )

این شرط همیشه صحیح خواهد بود و شما متوجه نمیشی که اینجای کدت مشکل داره چون بجای مقایسه کردن میاد 2 رو میریزه توی متغییر که نتیجش هم true خواهد بود همیشه
ولی اگه

if(2 = $cond )

بنویسی این بهت خطا میده موقع اجرا و متوجه میشی که اشتباه کردی

hgfhjgjh
جمعه 03 خرداد 1398, 09:34 صبح
جناب plague (http://barnamenevis.org/member.php?123420-plague) عزیز واقعاً ممنونم بابت توضیحات بسیار عالی و مناسب شما
واقعاً برام سوال شده بود و هر کاری کردم به جواب نرسیده بودم اما الان کاملاً متوجه شدم.