บทความนี้ออกแบบให้เหมาะกับนักเรียน/นักศึกษา เรียนเป็นลำดับขั้น พร้อมตัวอย่าง สรุป และแบบฝึกหัดในแต่ละระดับ
PHP เป็นภาษา server-side ที่นิยมมากสำหรับงานเว็บ เช่น สร้างเว็บด้วย Laravel/WordPress, ทำระบบหลังบ้าน (Backend), ติดต่อฐานข้อมูล
WordPress, Laravel, Symfony, Magento ยังครองส่วนแบ่งของเว็บทั่วโลก โดยเฉพาะระบบ e-commerce, CMS, และระบบภายในองค์กร
PHP มี community ใหญ่ มี package จำนวนมาก (Composer) และมี hosting รองรับทุกราคา ไม่ต้องกังวลเรื่อง infrastructure
สำหรับการเรียน คุณสามารถใช้ 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) ?>
<?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
";
}
?><?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";
}
?><?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';
?><?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
";
}
?><?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"
};
?><?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";
?><?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);
?><?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]
?>