กลับไปหน้าบทความ

🐘 PHP สำหรับงานเว็บ (ครบระดับ)

บทความนี้ออกแบบให้เหมาะกับนักเรียน/นักศึกษา เรียนเป็นลำดับขั้น พร้อมตัวอย่าง สรุป และแบบฝึกหัดในแต่ละระดับ

🧭 PHP คืออะไร ใช้ทำอะไร

PHP เป็นภาษา server-side ที่นิยมมากสำหรับงานเว็บ เช่น สร้างเว็บด้วย Laravel/WordPress, ทำระบบหลังบ้าน (Backend), ติดต่อฐานข้อมูล

ตัวอย่างการใช้งานจริง

  • WordPress - 43% ของเว็บทั่วโลกใช้ PHP
  • Laravel - Framework ยอดนิยมสำหรับ API และระบบซับซ้อน
  • E-commerce - Magento, WooCommerce สร้างร้านค้าออนไลน์
  • ระบบภายในองค์กร - ERP, CRM ที่ต้องการความเสถียร

🎯 ทำไมควรเรียน PHP?

ตลาดงานที่ใหญ่

WordPress, Laravel, Symfony, Magento ยังครองส่วนแบ่งของเว็บทั่วโลก โดยเฉพาะระบบ e-commerce, CMS, และระบบภายในองค์กร

  • WordPress ใช้ 43% ของเว็บทั้งหมด
  • Laravel เป็น framework ที่นักพัฒนาชอบมากในประเทศไทย
  • งาน freelance และระบบ SME หลายแห่งยังใช้ PHP

เรียนง่าย ใช้จริง

PHP มี community ใหญ่ มี package จำนวนมาก (Composer) และมี hosting รองรับทุกราคา ไม่ต้องกังวลเรื่อง infrastructure

⚙️ เริ่มต้นใช้ PHP

ติดตั้งในเครื่อง (แนวคิด)

สำหรับการเรียน คุณสามารถใช้ XAMPP/MAMP/Laragon หรือ Docker หรือใช้ online playground เช่น paiza.io

// ตรวจสอบว่าติดตั้ง PHP แล้ว
php -v

// รันไฟล์
php myscript.php

ไฟล์แรกของคุณ

<?php
echo "Hello, World!";

// หรือใช้ short tag (แต่ไม่แนะนำใน production)
?>
<p>Today is <?php echo date('Y-m-d'); ?></p>

🔤 ตัวแปรและชนิดข้อมูล

ประเภทข้อมูลพื้นฐาน

<?php
$name = "Somchai";           // string
$age = 20;                  // integer
$price = 99.99;             // float
$isStudent = true;          // boolean
$grades = [80, 85, 90];     // array (indexed)
$profile = [                 // array (associative)
  "name" => "Somchai",
  "age" => 20,
  "email" => "[email protected]"
];

// แสดงชนิดข้อมูล
var_dump($name);            // string(7) "Somchai"
var_dump($age);             // int(20)
var_dump($isStudent);       // bool(true)
?>

การใช้งาน Array แบบละเอียด

<?php
// Indexed Array
$fruits = ["apple", "banana", "orange"];
echo $fruits[0]; // "apple"

// เพิ่มสมาชิก
$fruits[] = "grape";

// นับจำนวน
echo count($fruits); // 4

// Associative Array
$user = [
  "name" => "Somchai",
  "age" => 20,
  "skills" => ["PHP", "MySQL", "JavaScript"]
];

// เข้าถึงข้อมูลซ้อน
echo $user["skills"][0]; // "PHP"

// วนลูป associative array
foreach ($user as $key => $value) {
  echo "$key: $value
";
}
?>

Type Juggling & Casting

<?php
// PHP จะแปลง type อัตโนมัติ (type juggling)
$num = "10 apples";
$result = $num + 5; // 15 (string ถูกแปลงเป็น int)

// การแปลง type แบบชัดแจ้ง
$str = "123";
$int = (int)$str;        // 123
$float = (float)$str;    // 123.0
$bool = (bool)$str;      // true

// ตรวจสอบ type
if (is_string($str)) {
  echo "This is a string";
}
?>

🧮 เงื่อนไขและลูป

Conditional Statements

<?php
$score = 85;

if ($score >= 80) {
  echo "Grade A";
} elseif ($score >= 70) {
  echo "Grade B";
} elseif ($score >= 60) {
  echo "Grade C";
} else {
  echo "Keep trying";
}

// Ternary operator (short if)
$result = ($score >= 60) ? "Pass" : "Fail";

// Null coalescing (PHP 7.0+)
$name = $_GET['name'] ?? 'Guest';
?>

Loops ที่ใช้บ่อย

<?php
// For loop
for ($i = 1; $i <= 5; $i++) {
  echo $i . " ";
}

// While loop
$count = 0;
while ($count < 5) {
  echo "Count: " . $count . "
";
  $count++;
}

// Do-while loop (รอบแรกคือรันแน่นอน)
do {
  echo "Do-while: " . $count . "
";
  $count--;
} while ($count > 0);

// Foreach (สำหรับ array)
$fruits = ["apple", "banana", "orange"];
foreach ($fruits as $fruit) {
  echo $fruit . "
";
}

// Foreach พร้อม key
$user = ["name" => "Somchai", "age" => 20];
foreach ($user as $key => $value) {
  echo "$key: $value
";
}
?>

Control Flow ขั้นสูง

<?php
// Switch statement
$day = "Monday";
switch ($day) {
  case "Monday":
  case "Tuesday":
    echo "Start of week";
    break;
  case "Friday":
    echo "TGIF!";
    break;
  default:
    echo "Mid week";
}

// Break และ Continue
for ($i = 0; $i < 10; $i++) {
  if ($i === 5) {
    continue; // ข้ามรอบนี้
  }
  if ($i === 8) {
    break; // ออกจาก loop
  }
  echo $i . " ";
}

// Match expression (PHP 8.0+)
$result = match($score) {
  90, 100 => "Excellent",
  80, 89 => "Very Good",
  70, 79 => "Good",
  default => "Need Improvement"
};
?>

🧩 Functions ฉบับใช้จริง

ฟังก์ชันพื้นฐาน

<?php
// ฟังก์ชันที่มี parameter และ return value
function calculateVat($price, $vatRate = 0.07) {
  return $price * $vatRate;
}

$vat = calculateVat(1000); // ใช้ default vat rate
$vatSpecial = calculateVat(1000, 0.1); // ใช้ vat rate 10%
echo "VAT: $vat";

// ฟังก์ชันที่คืนค่าหลายค่า
function getUserInfo($userId) {
  // pretend DB query
  return [
    "name" => "Somchai",
    "age" => 20,
    "email" => "[email protected]"
  ];
}

// List destructuring (PHP 7.1+)
["name" => $name, "email" => $email] = getUserInfo(1);
echo "Name: $name, Email: $email";
?>

Variadic Functions (รับ args ไม่จำกัด)

<?php
// รับ arguments จำนวนไม่จำกัด
function sum(...$numbers) {
  $total = 0;
  foreach ($numbers as $num) {
    $total += $num;
  }
  return $total;
}

echo sum(1, 2, 3, 4, 5); // 15
echo sum(10, 20); // 30

// ระบุ type ให้ variadic (PHP 7.0+)
function calculateAverage(int ...$scores): float {
  return array_sum($scores) / count($scores);
}

$avg = calculateAverage(80, 85, 90, 95);
echo "Average: " . number_format($avg, 2);
?>

Anonymous Functions & Closures

<?php
// Anonymous function (lambda)
$greet = function($name) {
  return "Hello, $name";
};

echo $greet("Somchai");

// Closure ที่จับตัวแปรจาก scope นอก
$multiplier = 3;
$multiply = function($number) use ($multiplier) {
  return $number * $multiplier;
};

echo $multiply(10); // 30

// ใช้กับ array functions
$numbers = [1, 2, 3, 4, 5];
$doubled = array_map(function($n) { return $n * 2; }, $numbers);
print_r($doubled); // [2, 4, 6, 8, 10]

// Arrow functions (PHP 7.4+)
$squared = array_map(fn($n) => $n ** 2, $numbers);
print_r($squared); // [1, 4, 9, 16, 25]
?>

🎮 ตัวอย่าง (จำลองผลลัพธ์)

🏁 สรุป (พื้นฐาน)

  • ✅ PHP ทำงานฝั่ง server เหมาะกับงานเว็บ
  • ✅ ตัวแปรใช้ $ นำหน้า มี string/int/float/bool/array
  • ✅ Array มี indexed และ associative สามารถซ้อนกันได้
  • ✅ PHP มี type juggling แต่ควรใช้ strict comparison (===)
  • ✅ Control flow: if/elseif/else, switch, match (PHP 8.0+)
  • ✅ Loops: for, while, do-while, foreach
  • ✅ Functions มี default params, variadic, return types
  • ✅ Anonymous functions และ arrow functions สำหรับ functional programming

📝 แบบฝึกหัด (พื้นฐาน)

  1. ตัวแปรพื้นฐาน: สร้างตัวแปร $firstName, $lastName, $age แล้ว echo ข้อความ "สวัสดีคุณ [ชื่อเต็ม] อายุ [age] ปี"
  2. Array operations: สร้าง array $products แล้วเพิ่มสินค้า 3 อย่าง วนลูปแสดงชื่อสินค้าทั้งหมด และแสดงจำนวนสินค้าทั้งหมด
  3. Conditional logic: เขียน if เช็คอายุ ถ้าอายุมากกว่าหรือเท่ากับ 18 ให้แสดง "Adult" ถ้า 13-17 ให้แสดง "Teen" ถ้าน้อยกว่า 13 ให้แสดง "Child"
  4. Function practice: เขียนฟังก์ชัน calculateDiscount($price, $discountPercent) คืนค่าราคาหลังหักส่วนลด และเรียกใช้งาน
  5. Loop challenge: สร้าง array $scores มีคะแนน 5 ค่า วนลูปหาค่าเฉลี่ย คะแนนสูงสุด ต่ำสุด และแสดงผล
  6. Array manipulation: สร้าง associative array $student มี name, age, grades (array) แล้วแสดงข้อมูลทั้งหมดในรูปแบบที่อ่านง่าย
  7. Type casting: ทดลองแปลง string "123abc" เป็น int, float, bool และแสดงผลลัพธ์ที่ได้
  8. Ternary practice: ใช้ ternary operator เช็คว่าเลขคู่หรือคี่ และแสดงผล