سطح B: کارآگاه منطقی

در سطح قبل، PHP را به یک ماشین حساب تبدیل کردیم. حالا وقت آن است که به آن قدرت تفکر و تصمیم‌گیری بدهیم. در این سطح، با عملگرهایی آشنا می‌شویم که به PHP اجازه می‌دهند مقادیر را مقایسه کند، شرایط را بسنجد و مانند یک کارآگاه، به نتیجه‌گیری‌های منطقی (درست یا غلط) برسد.

محتوای آموزشی

۱. عملگرهای مقایسه‌ای (Comparison Operators)

این عملگرها دو مقدار را با هم مقایسه کرده و همیشه یک نتیجه بولین (true یا false) برمی‌گردانند.

تفاوت حیاتی بین == و ===

این یکی از مهم‌ترین مفاهیم در PHP است. فرض کنید $a = 5 (عدد) و $b = "5" (رشته) را داریم.

قانون طلایی: برای جلوگیری از خطاهای ناخواسته، همیشه و تا جای ممکن از مقایسه سخت (=== و !==) استفاده کنید. این کار کد شما را قابل پیش‌بینی‌تر و امن‌تر می‌کند.

۲. عملگرهای منطقی (Logical Operators)

این عملگرها به شما اجازه می‌دهند چند شرط مقایسه‌ای را با هم ترکیب کنید.

۳. عملگرهای افزایش/کاهش (Increment/Decrement Operators)

این عملگرها راه‌های میان‌بری برای اضافه یا کم کردن یک واحد از یک متغیر عددی هستند.

تفاوت بین پیش و پس افزایش/کاهش بسیار ظریف اما مهم است و در حلقه‌ها و محاسبات پیچیده کاربرد دارد.


کارگاه عملی: سیستم بررسی قبولی دانش‌آموز

در این مثال، با استفاده از عملگرهای مقایسه‌ای و منطقی، وضعیت قبولی یک دانش‌آموز را بر اساس نمره و حضورش بررسی می‌کنیم.

<?php

$student_score = 14.5;
$attendance_percentage = 85;
$has_disciplinary_warning = false;

// شروط قبولی: نمره بالای ۱۰ و حضور بالای ۷۰ درصد
$passes_academically = ($student_score > 10) && ($attendance_percentage > 70);

// شرط نهایی قبولی: باید شرایط آکادمیک را داشته باشد و اخطار انضباطی هم نداشته باشد
$is_eligible_for_promotion = $passes_academically && !$has_disciplinary_warning;

echo "نمره دانش‌آموز: $student_score";
echo "<br>";
echo "درصد حضور: $attendance_percentage %";
echo "<br>";
echo "آیا اخطار انضباطی دارد؟ ";
var_dump($has_disciplinary_warning);
echo "<hr>";

echo "آیا شرایط آکادمیک قبولی را دارد؟ ";
var_dump($passes_academically);
echo "<br>";
echo "<strong>آیا در نهایت قبول است؟ </strong>";
var_dump($is_eligible_for_promotion);

// مثال برای عملگر افزایش
$attempts = 1;
echo "<hr>";
echo "تلاش اولیه برای ثبت نمره: " . $attempts++; // اول ۱ چاپ می‌شود، سپس attempts برابر ۲ می‌شود
echo "<br>";
echo "مقدار نهایی متغیر تلاش: " . $attempts; // اینجا ۲ چاپ می‌شود

?>

تمرین شما

صورت تمرین:

  1. کارآگاه نوع داده: دو متغیر $a = 5 (عدد) و $b = "5" (رشته) تعریف کنید. در خطوط جداگانه، نتیجه مقایسه آن‌ها با == و === را با استفاده از var_dump() چاپ کنید. زیر هر var_dump، در یک کامنت (مانند // Explain why...) توضیح دهید که چرا آن خروجی (true یا false) را دریافت کرده‌اید.
  2. سیستم مجوز ورود: یک سناریو برای ورود به یک بخش ویژه یک سایت طراحی کنید. کاربر برای ورود باید شرایط زیر را همزمان داشته باشد:
    • سن او ۱۸ سال یا بیشتر باشد.
    • عضویت ویژه (is_premium_member) داشته باشد (یعنی مقدارش true باشد).
    • حساب او مسدود (is_banned) نشده باشد (یعنی مقدارش false باشد).
    متغیرهایی برای این سه شرط تعریف کنید ($age, $is_premium_member, $is_banned) و مقادیر مختلفی را در آن‌ها امتحان کنید. سپس یک عبارت منطقی بنویسید که در نهایت true یا false را بر اساس این سه شرط برگرداند و با var_dump چاپ شود.

باشگاه ذهن: یک چالش برای هوش مصنوعی

چالش شما: عملگرهای منطقی && و || در PHP (و بسیاری از زبان‌های دیگر) یک رفتار هوشمندانه به نام "ارزیابی اتصال کوتاه" (Short-circuit Evaluation) دارند. این یک مفهوم بهینه‌سازی است که درک آن شما را به یک برنامه‌نویس حرفه‌ای‌تر تبدیل می‌کند.

وظیفه: یک پرامپت برای هوش مصنوعی طراحی کنید تا مفهوم "ارزیابی اتصال کوتاه" را برای شما به طور کامل توضیح دهد. پرامپت شما باید از AI بخواهد:

  1. تعریف کند که "ارزیابی اتصال کوتاه" برای عملگر && چیست. (راهنمایی: اگر بخش اول false باشد چه اتفاقی برای بخش دوم می‌افتد؟)
  2. تعریف کند که این رفتار برای عملگر || چگونه است. (راهنمایی: اگر بخش اول true باشد...)
  3. یک مثال کد عملی در PHP ارائه دهد که در آن یک تابع در سمت راست عملگر && قرار دارد و نشان دهد که آن تابع تحت چه شرایطی هرگز اجرا نمی‌شود.
  4. توضیح دهد که این رفتار چگونه می‌تواند به نوشتن کدهای بهینه‌تر و جلوگیری از خطاهای احتمالی (مانند تقسیم بر صفر) کمک کند.