Operators, Control Flow ও Loops

লেসন ১১ / ৩৯

Operators

// Arithmetic
$a + $b    // যোগ
$a - $b    // বিয়োগ
$a * $b    // গুণ
$a / $b    // ভাগ
$a % $b    // ভাগশেষ
$a ** $b   // ঘাত (PHP 7+)

// Assignment
$x = 10;
$x += 5;   // 15
$x -= 3;
$x *= 2;
$x /= 4;
$x .= "!"; // string concat

// Comparison
$a == $b    // সমান (loose)
$a === $b   // identical (strict) ⭐
$a != $b
$a !== $b
$a > $b, <, >=, <=
$a <=> $b   // spaceship (PHP 7+): -1, 0, 1

// Logical
$a && $b    // AND
$a || $b    // OR
!$a          // NOT
$a and $b    // AND (lower precedence)
$a xor $b    // XOR

// Null coalescing (PHP 7+)
$name = $_GET["name"] ?? "Guest";

// Nullsafe (PHP 8+)
$city = $user?->address?->city;

// String
$full = "Hi " . $name;   // concatenate
$greet .= "!";           // append

if / elseif / else

$marks = 75;

if ($marks >= 80) {
    $grade = "A+";
} elseif ($marks >= 70) {
    $grade = "A";
} elseif ($marks >= 60) {
    $grade = "B";
} else {
    $grade = "F";
}

// Ternary
$status = $age >= 18 ? "প্রাপ্তবয়স্ক" : "অপ্রাপ্তবয়স্ক";

// Null coalescing ternary
$name = $user["name"] ?? "অজানা";

// Short ternary (Elvis)
$x = $input ?: "default";   // $input truthy হলে $input, নয়তো "default"

switch

$day = 3;
switch ($day) {
    case 1: echo "সোমবার"; break;
    case 2: echo "মঙ্গলবার"; break;
    case 3: echo "বুধবার"; break;
    case 4:
    case 5:
        echo "সপ্তাহের মাঝামাঝি";
        break;
    default:
        echo "অজানা";
}

match (PHP 8+) ⭐

switch-এর আধুনিক বিকল্প — strict comparison, expression।

$status = match($code) {
    200, 201 => "সফল",
    301, 302 => "Redirect",
    404 => "পাওয়া যায়নি",
    500, 502, 503 => "সার্ভার ভুল",
    default => "অজানা",
};

Loops

// for
for ($i = 0; $i < 5; $i++) {
    echo $i;
}

// while
$i = 0;
while ($i < 5) {
    echo $i;
    $i++;
}

// do-while (অন্তত ১বার)
do {
    echo $i;
    $i++;
} while ($i < 5);

// foreach (Array) ⭐
$fruits = ["আম", "জাম", "লিচু"];
foreach ($fruits as $fruit) {
    echo $fruit;
}

// Key-value
$user = ["name" => "করিম", "age" => 25];
foreach ($user as $key => $value) {
    echo "$key: $value\n";
}

// By reference (পরিবর্তন)
foreach ($nums as &$n) {
    $n *= 2;
}
unset($n);

// Break ও Continue
foreach ($items as $item) {
    if ($item == "skip") continue;
    if ($item == "end") break;
    echo $item;
}