πŸ“– αž˜αŸαžšαŸ€αž“ PHP Basics β€” αžŸαŸ†αžŽαž½αžš & αž…αž˜αŸ’αž›αžΎαž™

αžšαŸ€αž“ PHP αž–αžΈαžŠαŸ†αž”αžΌαž„ β€” Script, Variables, Constants, Quotes, Data Types, Loosely Typed, gettype(), String+Number, Operators, Ternary β€” αž˜αžΆαž“ 10 Cards αž‡αžΆαž˜αž½αž™αž€αžΌαžŠαžšαžαŸ‹αž”αžΆαž“αž–αž·αžαŸ”

⏱ 45–60 αž“αžΆαž‘αžΈ β€’ αž€αž˜αŸ’αžšαž·αžαŸ– αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜

Q1

PHP Script αž’αžΆαž…αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžŽαŸˆαž’αŸ’αžœαžΈ Page?

Answer

PHP αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž…αŸ’αžšαžΎαž“αŸ–

  • .php (HTML+PHP) β€” αž”αŸ’αžšαžΎαž…αŸ’αžšαžΎαž“αž”αŸ†αž•αž»αž: HTML αžšαž½αž˜αž‡αžΆαž˜αž½αž™ PHP αž€αŸ’αž“αž»αž„ <?php ... ?>
  • Pure PHP (API/CLI) β€” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ JSON API ឬ command-line αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“ HTML
  • Short tag <?= ?> β€” shortcut αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ echo
  • .phtml / .php5 β€” αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„ framework αž…αžΆαžŸαŸ‹ (Zend); αž˜αž·αž“αžŸαžΌαžœαž”αŸ’αžšαžΎαžŸαž–αŸ’αžœαžαŸ’αž„αŸƒ
Code β€” index.php (HTML+PHP)
<!DOCTYPE html>
<html>
<body>
  <h1><?php echo "αžŸαž½αžŸαŸ’αžαžΈ PHP!"; ?></h1>
  <p>αžαŸ’αž„αŸƒαž“αŸαŸ‡: <?= date('Y-m-d') ?></p>
</body>
</html>
Output
αžŸαž½αžŸαŸ’αžαžΈ PHP!
αžαŸ’αž„αŸƒαž“αŸαŸ‡: 2026-02-28
Code β€” api.php (Pure PHP JSON)
<?php
// api.php - JSON output αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“ HTML
header('Content-Type: application/json');
$data = ["status" => "ok", "message" => "Hello API"];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
Output (JSON)
{
    "status": "ok",
    "message": "Hello API"
}
⚠ Common Mistakes & Fixes
  1. αž—αŸ’αž›αŸαž… <?php ?> β€” PHP code αž”αž„αŸ’αž αžΆαž‡αž‡αžΆ text αž’αž˜αŸ’αž˜αžαžΆαŸ” Fix: αžšαž»αŸ† code αž€αŸ’αž“αž»αž„ tagαŸ”
  2. αž—αŸ’αž›αŸαž… ; αž…αž»αž„αž”αž“αŸ’αž‘αžΆαžαŸ‹ β€” Parse errorαŸ” Fix: αžšαžΆαž›αŸ‹ statement αž…αž”αŸ‹αžŠαŸ„αž™ ;
  3. αž”αŸ’αžšαžΎ short tag <? αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“ = β€” αž˜αž·αž“ portableαŸ” Fix: αž”αŸ’αžšαžΎ <?php ឬ <?=
🎯 Mini Practice
  1. αž”αž„αŸ’αž€αžΎαž file hello.php αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‡ "Hello, World!" αž€αŸ’αž“αž»αž„ <h1>
  2. αž”αž„αŸ’αž€αžΎαž file today.php αž”αž„αŸ’αž αžΆαž‡αžαŸ’αž„αŸƒαžαŸ‚αž†αŸ’αž“αžΆαŸ† αžŠαŸ„αž™αž”αŸ’αžšαžΎ date()
πŸ”‘ Answer Key
<!-- hello.php -->
<h1><?php echo "Hello, World!"; ?></h1>

<!-- today.php -->
<p>Today: <?= date('d/m/Y') ?></p>
Q2

Variable αž‡αžΆαž’αŸ’αžœαžΈ? αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΈ?

Answer

Variable (ធថេរ) αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αŸ’αž“αž»αž„ memoryαŸ” αž€αŸ’αž“αž»αž„ PHP variable αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αžŠαŸ„αž™ $ (case-sensitive)αŸ”

  • αžˆαŸ’αž˜αŸ„αŸ‡αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αžŠαŸ„αž™αž’αž€αŸ’αžŸαžš ឬ _ (αž˜αž·αž“αž˜αŸ‚αž“αž›αŸαž)
  • αž’αžΆαž…αž•αŸ’αž‘αž»αž€: string, integer, float, boolean, array …
  • αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒαž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž–αŸαž› (re-assign)
Code
<?php
// αž”αŸ’αžšαž€αžΆαžŸ variable
$name = "សុខអ";      // string
$age  = 20;           // integer

// αž”αž„αŸ’αž αžΆαž‡ output
echo "αžˆαŸ’αž˜αŸ„αŸ‡: $name\n";
echo "αž’αžΆαž™αž»: $age αž†αŸ’αž“αžΆαŸ†\n";
echo "$name αž˜αžΆαž“αž’αžΆαž™αž» $age αž†αŸ’αž“αžΆαŸ†αŸ”\n";

// αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒ
$age = 21;
echo "αž’αžΆαž™αž»αžαŸ’αž˜αžΈ: $age αž†αŸ’αž“αžΆαŸ†\n";
?>
Output
αžˆαŸ’αž˜αŸ„αŸ‡: សុខអ
αž’αžΆαž™αž»: 20 αž†αŸ’αž“αžΆαŸ†
សុខអ αž˜αžΆαž“αž’αžΆαž™αž» 20 αž†αŸ’αž“αžΆαŸ†αŸ”
αž’αžΆαž™αž»αžαŸ’αž˜αžΈ: 21 αž†αŸ’αž“αžΆαŸ†
⚠ Common Mistakes & Fixes
  1. αž—αŸ’αž›αŸαž… $ β€” PHP αž˜αž·αž“αžŸαŸ’αž‚αžΆαž›αŸ‹ variableαŸ” $name βœ” / name ✘
  2. αž”αŸ’αžšαžΎαž›αŸαžαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αžˆαŸ’αž˜αŸ„αŸ‡ β€” $1name ✘ β†’ $name1 βœ”
🎯 Mini Practice
  1. αž”αŸ’αžšαž€αžΆαžŸ $city = "αž—αŸ’αž“αŸ†αž–αŸαž‰" αž αžΎαž™αž”αž„αŸ’αž αžΆαž‡ "αžαŸ’αž‰αž»αŸ†αžšαžŸαŸ‹αž“αŸ… αž—αŸ’αž“αŸ†αž–αŸαž‰"
  2. αž”αŸ’αžšαž€αžΆαžŸ $price = 2.5 αž αžΎαž™αž”αž„αŸ’αž αžΆαž‡ type αžŠαŸ„αž™ gettype()
πŸ”‘ Answer Key
<?php
$city = "αž—αŸ’αž“αŸ†αž–αŸαž‰";
echo "αžαŸ’αž‰αž»αŸ†αžšαžŸαŸ‹αž“αŸ… $city\n";

$price = 2.5;
echo gettype($price);   // double
?>
Q3

Variable vs Constant β€” αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”

Answer

Variable αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒ; Constant αž€αŸ†αžŽαžαŸ‹αžαž˜αŸ’αž›αŸƒαž˜αŸ’αžαž„ αž˜αž·αž“αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”

αž›αž€αŸ’αžαžŽαŸˆVariableConstant
Syntax$name = "...";define("NAME","...");
const NAME = "...";
αž”αŸ’αžšαžΎ $?βœ” αž˜αžΆαž“ $✘ αž‚αŸ’αž˜αžΆαž“ $
αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒ?βœ” αž”αžΆαž“βœ˜ αž˜αž·αž“αž”αžΆαž“
ScopeLocal / GlobalGlobal αž‡αžΆαž“αž·αž…αŸ’αž…
αžˆαŸ’αž˜αŸ„αŸ‡ convention$camelCaseUPPER_CASE
Code
<?php
// -- Constant --
define("SITE_NAME", "PHP School");
echo SITE_NAME . "\n";          // PHP School

// ⚠ constant αž˜αž·αž“αž’αžΆαž… reassign:
// define("SITE_NAME", "Other");  // Warning!

// -- Variable --
$version = "1.0";
echo "Version: $version\n";
$version = "2.0";               // βœ” re-assign αž”αžΆαž“
echo "Version: $version\n";

const TAX_RATE = 0.10;
echo "Tax: " . (TAX_RATE * 100) . "%\n";
?>
Output
PHP School
Version: 1.0
Version: 2.0
Tax: 10%
⚠ Common Mistakes & Fixes
  1. αž”αŸ’αžšαžΎ $ αž‡αžΆαž˜αž½αž™ constant β€” $SITE_NAME ✘ (αž“αŸ„αŸ‡αž‡αžΆ variable αžαŸ’αž˜αžΈ) β†’ SITE_NAME βœ”
  2. αž–αŸ’αž™αžΆαž™αžΆαž˜ reassign constant β€” αž“αžΉαž„ warning/errorαŸ” Fix: αž”αŸ’αžšαžΎ variable αž”αžΎαžαŸ’αžšαžΌαžœαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ”
🎯 Mini Practice
  1. αž”αž„αŸ’αž€αžΎαž constant MAX_USERS = 100 αž αžΎαž™ echo
  2. αž”αž„αŸ’αž€αžΎαž $count = 0 αž αžΎαž™ αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αžΆ 5 αž αžΎαž™ echo
πŸ”‘ Answer Key
<?php
define("MAX_USERS", 100);
echo MAX_USERS;   // 100

$count = 0;
$count = 5;
echo $count;      // 5
?>
Q4

echo " " (double) vs echo ' ' (single) β€” αž•αŸ’αžŸαŸαž„αž€αŸ’αž“αžΆ;

Answer
  • Double quotes " " β€” PHP parse variable αž“αŸ…αž€αŸ’αž“αž»αž„ string αž“αž·αž„ αžŸαŸ’αž‚αžΆαž›αŸ‹ escape sequences (\n, \t, \\)
  • Single quotes ' ' β€” αž”αž„αŸ’αž αžΆαž‡ literal text αž‘αžΆαŸ†αž„αž’αžŸαŸ‹; αž˜αž·αž“ parse variable
Code
<?php
$name = "Dara";

// Double quotes - variable αžαŸ’αžšαžΌαžœαž”αžΆαž“ parse
echo "Hello, $name!\n";        // Hello, Dara!
echo "Tab:\there\n";            // Tab:    here

// Single quotes - literal text
echo 'Hello, $name!\n';        // Hello, $name!\n
echo 'It\'s working';          // It's working
?>
Output
Double: Hello, Dara!
Single: Hello, $name!\n
Escape: It's working
⚠ Common Mistakes & Fixes
  1. αžšαŸ†αž–αžΉαž„ variable parse αž€αŸ’αž“αž»αž„ single quotes β€” αž”αž„αŸ’αž αžΆαž‡ $name αž‡αžΆ textαŸ” Fix: αž”αŸ’αžšαžΎ double quotes
  2. αž—αŸ’αž›αŸαž… escape ' αž€αŸ’αž“αž»αž„ single quotes β€” syntax errorαŸ” Fix: \' αž¬αž”αŸ’αžšαžΎ double quotes
🎯 Mini Practice
  1. $fruit = "Apple"; echo αžŠαŸ„αž™αž”αŸ’αžšαžΎ double αž“αž·αž„ single β€” αž”αŸ’αžšαŸ€αž”αž’αŸ€αž” output
  2. αž”αŸ’αžšαžΎ escape \n αž€αŸ’αž“αž»αž„ double quotes αžŠαžΎαž˜αŸ’αž”αžΈαž…αž»αŸ‡αž”αž“αŸ’αž‘αžΆαžαŸ‹
πŸ”‘ Answer Key
<?php
$fruit = "Apple";
echo "I like $fruit\n";   // I like Apple
echo 'I like $fruit\n';   // I like $fruit\n
echo "Line1\nLine2\n";    // Line1 (newline) Line2
?>
Q5

αž”αŸ’αžšαž—αŸαž‘/αž›αž€αŸ’αžαžŽαŸˆ Variable (Data Types)

Answer

PHP αž˜αžΆαž“ Data Types 3 αž€αŸ’αžšαž»αž˜αŸ–

αž€αŸ’αžšαž»αž˜TypesαžαŸ†αžŽαžΆαž„
Scalarstring, int, float, bool"hi", 10, 3.14, true
Compoundarray, object[1,2], new stdClass
SpecialNULL, resourcenull, fopen()
Code
<?php
$str   = "Hello";       // string
$int   = 42;            // integer
$float = 3.14;          // float (double)
$bool  = true;          // boolean
$arr   = [1, 2, 3];     // array
$obj   = new stdClass;  // object
$obj->name = "Test";
$nul   = null;          // NULL

echo gettype($str)   . "\n";  // string
echo gettype($int)   . "\n";  // integer
echo gettype($float) . "\n";  // double
echo gettype($bool)  . "\n";  // boolean
echo gettype($arr)   . "\n";  // array
echo gettype($obj)   . "\n";  // object
echo gettype($nul)   . "\n";  // NULL

var_dump($float);              // float(3.14)
var_dump($bool);               // bool(true)

// resource example
$file = fopen("php://temp", "r");
echo gettype($file) . "\n";   // resource
fclose($file);                 // βœ” αžαŸ’αžšαžΌαžœ close αž‡αžΆαž“αž·αž…αŸ’αž…
?>
Output
string
integer
double
boolean
array
object
NULL
float(3.14)
bool(true)
resource
⚠ Common Mistakes & Fixes
  1. αž—αŸ’αž›αŸαž… fclose() β€” resource leakαŸ” Fix: αžαŸ’αžšαžΌαžœ fclose() αž‡αžΆαž“αž·αž…αŸ’αž…αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αŸ’αžšαžΎ fopen()
  2. αž…αž˜αŸ’αž›αŸ‚αž€ float αž“αž·αž„ double β€” gettype() αžαŸ’αžšαž›αž”αŸ‹ "double" αž˜αž·αž“αž˜αŸ‚αž“ "float"αŸ” αž‘αžΆαŸ†αž„αž–αžΈαžšαž‡αžΆαžšαž”αžŸαŸ‹αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”
🎯 Mini Practice
  1. αž”αŸ’αžšαž€αžΆαžŸ variable 4 αž”αŸ’αžšαž—αŸαž‘ (string, int, float, bool) αž αžΎαž™ var_dump()
  2. αž”αŸ’αžšαžΎ gettype() αž›αžΎ null αž“αž·αž„ array β€” αž”αž„αŸ’αž αžΆαž‡αž’αŸ’αžœαžΈ?
πŸ”‘ Answer Key
<?php
var_dump("hi");    // string(2) "hi"
var_dump(10);      // int(10)
var_dump(1.5);     // float(1.5)
var_dump(false);   // bool(false)
echo gettype(null);      // NULL
echo gettype([1,2,3]);   // array
?>

βœ“ Check Understanding 1 (Q1–Q5) β€” Predict the Output

  1. <?php echo "Today: " . date('Y'); ?>
    πŸ” Answer

    Today: 2026

  2. <?php $x = 5; $x = 10; echo $x; ?>
    πŸ” Answer

    10 (variable re-assigned)

  3. <?php define("PI",3.14); echo PI; ?>
    πŸ” Answer

    3.14

  4. <?php $a="PHP"; echo 'I love $a'; ?>
    πŸ” Answer

    I love $a (single quotes = no parsing)

  5. <?php echo gettype(3.14); ?>
    πŸ” Answer

    double

Q6

"PHP is a Loosely Typed Language" αž˜αžΆαž“αž“αŸαž™αžαžΆαž˜αŸ‰αŸ‚αž…?

Answer

PHP αž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸ type αž›αžΎ variableαŸ” PHP αž“αžΉαž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš type αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· (type juggling)αŸ” αž“αŸαŸ‡αž’αžΆαž…αž„αžΆαž™αž”αŸ’αžšαžΎαž”αžΆαž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αžΆαž…αž“αžΆαŸ†αž‘αŸ… bug!

Code
<?php
$x = "10";            // string
echo gettype($x) . "\n";   // string

$x = $x + 5;          // αž•αŸ’αž›αžΆαžŸαŸ‹αž‡αžΆ integer!
echo $x . "\n";            // 15
echo gettype($x) . "\n";   // integer

$x = $x + 1.5;        // αž•αŸ’αž›αžΆαžŸαŸ‹αž‡αžΆ float!
echo $x . "\n";            // 16.5
echo gettype($x) . "\n";   // double

// ⚠ αž αžΆαž“αž·αž—αŸαž™ type juggling
$a = "5 apples";
$b = $a + 3;           // PHP αž…αžΆαž”αŸ‹αž™αž€ 5 αž–αžΈ "5 apples"
echo "$b\n";            // 8

// βœ” Safe casting
$val = "42abc";
$safe = (int)$val;
echo "Cast: $safe\n";       // 42
echo "Type: " . gettype($safe) . "\n";

$fval = (float)"3.14abc";
echo "Float cast: $fval\n"; // 3.14
?>
Output
string
15
integer
16.5
double
8
Cast: 42
Type: integer
Float cast: 3.14
⚠ Common Mistakes & Fixes
  1. αž–αžΉαž„αž•αžΆ loose typing β€” "5 apples" + 3 = 8 αž’αžΆαž…αž”αž„αŸ’αž€αž‡αžΆ bugαŸ” Fix: validate αžŠαŸ„αž™ is_numeric() αž˜αž»αž“
  2. αž”αŸ’αžšαžΎ == αž‡αŸ†αž“αž½αžŸαž‡αžΆ === β€” "0" == false αž‡αžΆ true! Fix: αž”αŸ’αžšαžΎ === αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ
🎯 Mini Practice
  1. $x = "7"; $x = $x + 3; β€” echo $x αž“αž·αž„ gettype($x)
  2. $y = (int)"99bottles"; β€” echo $y?
πŸ”‘ Answer Key
$x = 10, gettype = integer
$y = 99
Q7

gettype() αž‡αžΆαž’αŸ’αžœαžΈ?

Answer

gettype() αž‡αžΆ function αžαŸ’αžšαž›αž”αŸ‹ string αž”αž„αŸ’αž αžΆαž‡ type αžšαž”αžŸαŸ‹ variableαŸ” αžαŸ’αžšαž›αž”αŸ‹αŸ– "string", "integer", "double", "boolean", "array", "object", "NULL", "resource"

Code
<?php
echo gettype("Hello")     . "\n";  // string
echo gettype(42)           . "\n";  // integer
echo gettype(3.14)         . "\n";  // double
echo gettype(true)         . "\n";  // boolean
echo gettype([1,2,3])      . "\n";  // array
echo gettype(null)         . "\n";  // NULL
echo gettype(new stdClass) . "\n";  // object
?>
Output
string
integer
double
boolean
array
NULL
object
⚠ Common Mistakes & Fixes
  1. αž—αŸ’αž›αŸαž…αžαžΆ float αžαŸ’αžšαž›αž”αŸ‹ "double" β€” gettype() αž”αŸ’αžšαžΎ "double" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ floatαŸ” αž‡αžΆ legacy αž–αžΈ CαŸ”
  2. αž”αŸ’αžšαžΎ gettype() αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαŸ€αž”αž’αŸ€αž” type β€” αž…αžΌαž›αž”αŸ’αžšαžΎ is_string(), is_int() αžœαž·αž‰αŸ”
🎯 Mini Practice
  1. echo gettype(""); β€” αž”αž„αŸ’αž αžΆαž‡αž’αŸ’αžœαžΈ?
  2. echo gettype(0); β€” αž”αž„αŸ’αž αžΆαž‡αž’αŸ’αžœαžΈ?
πŸ”‘ Answer Key
gettype("")  β†’ string
gettype(0)   β†’ integer
Q8

αž’αžΆαž…αž”αžΌαž€ String αž‡αžΆαž˜αž½αž™ Number αž”αžΆαž“αž‘αŸ?

Answer

αž”αžΆαž“! PHP αž“αžΉαž„αž•αŸ’αž›αžΆαžŸαŸ‹ string αž‡αžΆ number αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· (type juggling)αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αžšαžΌαžœαžšαŸˆαžœαžΆαž„αŸ”

Code
<?php
// Case 1: "10" + 5
$r1 = "10" + 5;
echo '"10" + 5 = ' . $r1 . "\n";           // 15
echo "Type: " . gettype($r1) . "\n";        // integer

// Case 2: "10abc" + 5 β€” PHP αž™αž€ 10 αž–αžΈ "10abc"
$r2 = "10abc" + 5;
echo '"10abc" + 5 = ' . $r2 . "\n";         // 15

// Case 3: "abc" + 5 β€” "abc" = 0
$r3 = "abc" + 5;
echo '"abc" + 5 = ' . $r3 . "\n";           // 5

// βœ” Best practice: validate αž˜αž»αž“
$input = "10abc";
if (is_numeric($input)) {
    echo "Safe: " . ($input + 5) . "\n";
} else {
    echo "⚠ '$input' αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž›αŸαžαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ\n";
}

// βœ” Cast αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ
$safe = (int)"42" + 8;
echo "Safe cast: $safe\n";           // 50
?>
Output
"10" + 5 = 15
Type: integer
"10abc" + 5 = 15
"abc" + 5 = 5
⚠ '10abc' is not a valid number
Safe cast: 50
⚠ Common Mistakes & Fixes
  1. αž”αŸ’αžšαžΎ . αž‡αŸ†αž“αž½αžŸ + β€” . αž‡αžΆ string concat; + αž‡αžΆ mathαŸ” "10"."5" = "105" αž”αŸ‰αž»αž“αŸ’αžαŸ‚ "10"+5 = 15
  2. αž˜αž·αž“ validate input β€” αž’αžΆαž…αž”αž„αŸ’αž€ bugαŸ” Fix: αž”αŸ’αžšαžΎ is_numeric() αž˜αž»αž“αž‚αžŽαž“αžΆ
🎯 Mini Practice
  1. "20" + "30" = ? αž“αž·αž„ "20" . "30" = ?
  2. is_numeric("12.5") αžαŸ’αžšαž›αž”αŸ‹αž’αŸ’αžœαžΈ?
πŸ”‘ Answer Key
"20" + "30"  = 50      (math)
"20" . "30"  = "2030"  (concat)
is_numeric("12.5") = true
Q9

Operators αž“αŸ…αž€αŸ’αž“αž»αž„ PHP αž˜αžΆαž“αž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡?

Answer

PHP αž˜αžΆαž“ operator αž‡αžΆαž…αŸ’αžšαžΎαž“αž€αŸ’αžšαž»αž˜αŸ–

1. Arithmetic
<?php
echo 10 + 3 . "\n";   // 13
echo 10 - 3 . "\n";   // 7
echo 10 * 3 . "\n";   // 30
echo 10 / 3 . "\n";   // 3.333...
echo 10 % 3 . "\n";   // 1
echo 2 ** 3 . "\n";   // 8
?>
13
7
30
3.3333333333
1
8
2. Assignment
<?php
$a = 10;  $a += 5;  // 15
$a -= 3;  // 12     $a *= 2;  // 24
$a /= 4;  // 6      $a %= 4;  // 2
$s = "Hi"; $s .= " PHP"; // "Hi PHP"
echo "$a\n$s\n";
?>
2
Hi PHP
3. Comparison
<?php
var_dump(5 == "5");    // true  (loose)
var_dump(5 === "5");   // false (strict)
var_dump(5 != "5");    // false
var_dump(5 !== "5");   // true
var_dump(5 > 3);      // true
var_dump(5 <= 5);     // true
var_dump(5 <=> 3);    // 1 (spaceship)
?>
bool(true)
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)
int(1)
4. Increment / Decrement
<?php
$a = 5;
echo $a++ . "\n";  // 5 (return then ++)
echo $a   . "\n";  // 6
echo ++$a . "\n";  // 7 (++ then return)
echo --$a . "\n";  // 6
?>
5
6
7
6
5. Logical
<?php
var_dump(true && false);   // false
var_dump(true || false);   // true
var_dump(!true);           // false
?>
bool(false)
bool(true)
bool(false)
6. String
<?php
echo "Hello" . " " . "PHP" . "\n";  // Hello PHP
$s = "Hi"; $s .= " World";
echo $s . "\n";                      // Hi World
?>
Hello PHP
Hi World
7. Array
<?php
$a = ["a" => 1, "b" => 2];
$b = ["c" => 3, "d" => 4];
$c = $a + $b;  // union
print_r($c);
var_dump($a == $b);   // false
var_dump($a === $a);  // true
?>
Array ( [a] => 1 [b] => 2 [c] => 3 [d] => 4 )
bool(false)
bool(true)
8. Ternary & Null Coalescing (αž˜αžΎαž› Q10)
<?php
$age = 20;
echo ($age >= 18) ? "Adult" : "Minor";  // Adult
$name = $_GET['name'] ?? "Guest";         // Guest
?>
Adult
Guest
⚠ Common Mistakes & Fixes
  1. αž”αŸ’αžšαžΎ = αž‡αŸ†αž“αž½αžŸ == β€” = αž‡αžΆ assign; == αž‡αžΆ compareαŸ” if($x = 5) αžαŸ‚αž„αžαŸ‚ true!
  2. αž”αŸ’αžšαžΎ == αž‡αŸ†αž“αž½αžŸ === β€” == αž˜αž·αž“αž”αŸ’αžšαŸ€αž”αž’αŸ€αž” typeαŸ” "0"==false αž‡αžΆ trueαŸ” Fix: αž”αŸ’αžšαžΎ ===
🎯 Mini Practice
  1. $x=10; $x %= 3; echo $x; β€” ?
  2. var_dump(0 == "abc"); β€” true ឬ false?
πŸ”‘ Answer Key
$x = 10 % 3 = 1
0 == "abc" β†’ PHP 8: false (PHP 7: true)
Q10

Conditional Operator (Ternary) αž‡αžΆαž”αŸ’αžšαž—αŸαž‘αž’αŸ’αžœαžΈ?

Answer

Ternary operator αž‡αžΆ shortcut αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ if-else αž€αŸ’αž“αž»αž„αž”αž“αŸ’αž‘αžΆαžαŸ‹αžαŸ‚αž˜αž½αž™αŸ–

$result = (condition) ? value_if_true : value_if_false;

Null coalescing ?? β€” αžαŸ’αžšαž›αž”αŸ‹αžαž˜αŸ’αž›αŸƒαžαžΆαž„αž†αŸ’αžœαŸαž„αž”αžΎ variable αž‡αžΆ null ឬ undefinedαŸ–

$result = $value ?? default_value;
Code
<?php
// Example 1: Vote
$age = 20;
$canVote = ($age >= 18) ? "αž’αžΆαž…αž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αžαž”αžΆαž“" : "αž˜αž·αž“αž‘αžΆαž“αŸ‹αž’αžΆαž…αž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αž";
echo "αž’αžΆαž™αž» $age: $canVote\n";

// Example 2: Pass/Fail
$score = 45;
$result = ($score >= 50) ? "Pass βœ”" : "Fail ✘";
echo "Score $score: $result\n";

// Example 3: Null coalescing ??
$gender = $_GET['gender'] ?? 'αž˜αž·αž“αž”αž‰αŸ’αž…αžΌαž›';
echo "Gender: $gender\n";

$username = null;
$display = $username ?? "Anonymous";
echo "User: $display\n";

// Nested ternary (αž”αŸ’αžšαž™αŸαžαŸ’αž“!)
$num = 0;
$type = ($num > 0) ? "positive" : (($num < 0) ? "negative" : "zero");
echo "$num is $type\n";
?>
Output
αž’αžΆαž™αž» 20: αž’αžΆαž…αž”αŸ„αŸ‡αž†αŸ’αž“αŸ„αž
Score 45: Fail
Gender: αž˜αž·αž“αž”αž‰αŸ’αž…αžΌαž›
User: Anonymous
0 is zero
⚠ Common Mistakes & Fixes
  1. Nested ternary αž…αŸ’αžšαžΎαž“αž–αŸαž€ β€” αž–αž·αž”αžΆαž€αž’αžΆαž“αŸ” Fix: αž”αŸ’αžšαžΎ if-else αž¬αž”αžΆαž€ () αž‡αžΆαž“αž·αž…αŸ’αž…
  2. αž—αŸ’αž›αŸαž… ?? αž αžΎαž™αž”αŸ’αžšαžΎ ternary αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ β€” $x ?? "default" αžŸαŸ’αž˜αžΎαž„αž‡αžΆαž„ isset($x) ? $x : "default"
🎯 Mini Practice
  1. $temp=35; echo ($temp>30)?"Hot":"Cool"; β€” ?
  2. $x = null; echo $x ?? "N/A"; β€” ?
πŸ”‘ Answer Key
$temp=35 β†’ "Hot"
$x=null β†’ "N/A"

βœ“ Check Understanding 2 (Q6–Q10) β€” Predict the Output

  1. $x = "5" + 3; echo gettype($x);
    πŸ” Answer

    integer

  2. echo gettype(null);
    πŸ” Answer

    NULL

  3. "3 cats" + "2 dogs" = ?
    πŸ” Answer

    5 (PHP αž™αž€ 3 αž“αž·αž„ 2)

  4. var_dump(0 === false);
    πŸ” Answer

    bool(false) β€” === αž”αŸ’αžšαŸ€αž”αž’αŸ€αž” type (int vs bool)

  5. $n = null; echo $n ?? "default";
    πŸ” Answer

    default

πŸ§ͺ Try It β€” αžŸαžΆαž€αž›αŸ’αž”αž„

πŸš€ How to Run β€” αžšαž”αŸ€αž”αžšαžαŸ‹αž”αžΆαž“αž˜αŸ‰αŸαž…

  1. αž…αž˜αŸ’αž›αž„ file qa_php_basics.php αž‘αŸ…αž€αŸ’αž“αž»αž„ folder:
    C:\laragon\www\ex\qa_php_basics.php
    ឬ
    C:\xampp\htdocs\ex\qa_php_basics.php
  2. αž”αžΎαž€ Laragon / XAMPP (Apache + PHP)
  3. αž”αžΎαž€ browser αž αžΎαž™αž…αžΌαž›αŸ–
    http://localhost/ex/qa_php_basics.php

πŸ“š Recap β€” αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž“

βœ” Q1: PHP script types (.php, API, CLI)
βœ” Q2: Variables ($name, $age)
βœ” Q3: Variable vs Constant
βœ” Q4: Double vs Single quotes
βœ” Q5: Data Types (8 types)
βœ” Q6: Loosely Typed & type juggling
βœ” Q7: gettype() function
βœ” Q8: String + Number addition
βœ” Q9: All PHP Operators
βœ” Q10: Ternary & Null coalescing