روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ مهدی
فرق if و switch چیه دقیقا؟
جامعه پی اچ پی ایجاد شده در ۱۲ بهمن ۱۴۰۰

فرق If و switch چیه و چرا خروچی کد زیر با switch درست نیست؟3bb9-Untitled.png

سلام مهدی جان

هردو این موارد از ساختار‌های کنترلی و تصمیم گیری هستن ولی با این فرق که در if فقط حالت بود و نبود چک میشه، مثلا اگر این مورد وجود داشت این کار رو انجام بده در غیر این صورت اینکار رو ولی در switch ما با کیس‌ها سروکار داریم یا بهتره بگیم حالات مثلا اگر این شکلی بود این کار اجرابشه اگر شکل دوم بود اینکار ودر نهایت در ساختار سویچ ما یک حالت هم داریم که میگه اگر هیچ کدوم از حالاتی که نا گفتیم نبود این حالت پیشفرض رو در نظر بگیر .

دقت داشته باش که تصمیم گیری برای حالات موجود در یک روند با سویچ انجام میشه مثل روز‌های هفته ولی درستی انجام یک کار برای ادامه مسیر با if و else انجام میشه

امیدوارم که به صورت مفید برات توضیح داده باشم

محمد نقلانی ۱۳ بهمن ۱۴۰۰، ۰۴:۳۲

سلام.

در مورد اسکریپتی که نوشتید، شما اومدید مقدار صفر یعنی false رو در switch گذاشتید:

switch(0)

در ادامه ی شرط case‌ها چک میشه و نتیجه ی شرط‌ها با مقداری که در switch قرار گرفته تست میشه:

case $x == 0 // true  
// ===> true == false
// output: false


شرط بعدی:

$x < 0 // false
// ===> false == false
// output: true

بنابراین شرط دوم اجرا میشه.

شما باید به این شکل مینوشتید:

$x = 0;
switch (true) {
    case $x == 0:
        $result = 'مساوی';
        break;
    case $x < 0:
        $result = 'کوچکتر';
        break;
    case $x > 0:
        $result = 'بزرگتر';
        break;
}
echo $result;
محسن موحد ۱۳ بهمن ۱۴۰۰، ۰۸:۵۵

متوجه نشدم یعنی چی دقیقا

چرا فقط واسه عدد صفر اینجوره من که false نذاشتم متغیر رو گذاشتم که مقدارش 0 هست

مهدی ۱۳ بهمن ۱۴۰۰، ۲۰:۴۴

صفر با false فرقی نداره توو حالت loosely type.

جفتشون یک معنیرو میدن. شما میتونی false در نظر نگیری و صفر بذاری. بازم جواب یکیه.

نتیجه 0 == false جوابش true هست.

echo 0 == false // true

هر مقداریم جز صفر، true هست. 

بهترین پاسخ
محسن موحد ۱۴ بهمن ۱۴۰۰، ۰۰:۵۹