ในครั้งก่อนผมได้ทำบทความเกี่ยวกับ PHP นั่นก็คือ มาเริ่มเรียนเขียนโปรแกรมด้วยภาษา PHP กันเถอะ (PHP for Beginners) ซึ่งจะแตกต่างจากบทความนี้ตรงที่ บทความนี้จะเน้นแทบทุกเรื่องที่ต้องใช้ใน PHP โดยบทความที่ผมเขียนก่อนหน้า อาจจะข้ามหลายๆ เรื่องไป แต่บทความนี้จะเจาะลึกมากกว่าบทความก่อนหน้า ต้องขอออกตัวก่อนว่า ผมพึ่งจะเริ่มหัดเขียน PHP ได้ไม่นานเท่าไหร่ แต่ผมจะพยายามที่จะเขียนบทความนี้ให้ครบทุกเรื่องที่เกี่ยวข้องกับ PHP และอธิบายให้เข้าใจง่ายมากที่สุด
Introduction
มารู้จัก PHP เพิ่มอีกสักนิด PHP คือ server-side scripting ที่ออกแบบมาสำหรับการใช้งานบนเว็บ หมายความว่า มันถูกออกแบบมาสำหรับการทำงานที่ฝั่ง Server ซึ่งหากใครที่เริ่มทำเว็บมาบ้างจะได้ยินคำว่า Server Side และ Client Side อยู่บ่อยๆ
Pre-requisites
ก่อนจะไปเริ่มต้นเขียน PHP กัน เราจะเป็นที่จะต้องติดตั้ง PHP ไว้ในเครื่องก่อน ซึ่งผมก็มีการติดตั้งอยู่หลากหลายแบบด้วยกัน เริ่มตั้งแต่
ติดตั้ง PHP
- ใช้งานบน Docker ซึ่งผมได้ทำเป็นบทความละ การติดตั้งและใช้งาน PHP Apache และ MySQL ด้วย Docker Compose
- หรือจะรันแบบคำสั่งเดียว ใช้ได้เลยก็ รัน PHP Project ฉบับโคตรเร็วด้วย PHP CLI
หรือจะโปรแกรมที่มัดรวมทุกอย่างมาให้แล้วก็
ติดตั้ง Editor
Editor ใครจะใช้อันไหนก็ตามสะดวกเลยนะ ถ้าเตรียมเครื่องมือทุกอย่างพร้อมแล้ว ก็ไปเริ่มต้นเขียน PHP กันเลย
Echo
ก่อนจะไปเรื่องอื่น เราลองมาแสดงค่าอะไรบางอย่างออกทางหน้าจอกันก่อน เพื่อเช็คว่า PHP สามารถทำงานได้ โดยเราจะใช้คำสั่ง echo
ในการแสดงค่าออกทางหน้าจอ
แต่ก่อนที่เราจะใช้คำสั่ง เราจำเป็นที่จำต้องเปิด tag <?php
ขึ้นมาก่อน เพื่อที่จะบอกว่า ต้องส่วนนี้คือส่วนที่เป็นภาษา PHP และปิด tag ด้วย ?>
เมื่อจบคำสั่ง PHP มาลองดูกัน
ผมจะทำการสร้าง folder สำหรับ Project PHP แล้ว สร้างไฟล์ index.php
ขึ้นมา และเขียนคำสั่ง echo
ดังนี้
<?php
echo 'Hello World!';
?>

จากนั้นผมจะเปิด Terminal ขึ้นมา แล้วใช้คำสั่ง php -S localhost:8000
เพื่อที่จะรัน PHP Server ขึ้นมา (สามารถดูรายละเอียดได้ที่ รัน PHP Project ฉบับโคตรเร็วด้วย PHP CLI)
แล้วเปิด Browser ขึ้นมา แล้วพิมพ์ localhost:8000
ลงไป จะได้ผลลัพธ์ดังนี้
วิธีการรันไฟล์ก็อยู่ที่เครื่องมือที่ท่านใช้เลยนะ หลายท่านอาจจะไม่ได้ใช้ PHP CLI เหมือนกับผม วิธีการจะแตกต่างกันไป แต่หลักๆ ก็คือ ต้องมี Server ที่รองรับ PHP ให้ทำงาน และเปิดไฟล์ index.php
ขึ้นมาให้เรา จะใช้เครื่องมือไหน ก็ตามสะดวกเลย

Variables
ไม่ว่าจะเริ่มต้นเรียนเขียนภาษาไหน ตัวแรกสุดที่ต้องรู้ก็คือการประกาศตัวแปร ซึ่งใน PHP จะใช้ $
นำหน้าตัวแปรที่เราต้องการจะประกาศ
เช่น
<?php
$name = '9mza';
$age = 60;
$isMale = true;
?>
เราสามารถสามารถใช้ echo
ในการแสดงผลตัวแปรได้เช่นกัน
echo $name; // 9mza
echo $age; // 20
echo $isMale; // 1
Data Types
ใน PHP มี 8 ชนิดของ Data Type ที่เราสามารถใช้งานได้ ได้แก่
- String
- Integer
- Float
- Boolean
- Array
- Object
- Null
- Resource
String
String คือ ข้อความ ซึ่งเราสามารถประกาศได้โดยใช้ ''
หรือ ""
ก็ได้
<?php
$name = '9mza';
$name = "9mza";
?>
ซึ่งความแตกต่างของ ''
กับ ""
คือ ใน ''
จะไม่สามารถใช้ตัวแปรได้ แต่ใน ""
สามารถใช้ตัวแปรได้
<?php
$name = '9mza';
echo 'My name is $name'; // My name is $name
echo "My name is $name"; // My name is 9mza
?>
Integer
Integer คือ จำนวนเต็ม ซึ่งเราสามารถประกาศได้โดยใช้ตัวเลขเท่านั้น โดยจะเป็นจำนวนเต็มบวกหรือลบก็ได้
<?php
$first = 60;
$second = -60;
?>
Float
Float คือ จำนวนทศนิยม ซึ่งเราสามารถประกาศได้โดยใช้ตัวเลขเท่านั้น โดยจะเป็นจำนวนเต็มบวกหรือลบก็ได้
<?php
$price = 20.5;
$discount = -20.5;
?>
Boolean
Boolean คือ ค่าที่มีค่าเป็น true
หรือ false
เท่านั้น
<?php
$isMale = true;
$isFemale = false;
?>
Array
Array คือ ตัวแปรที่สามารถเก็บข้อมูลหลายๆ ค่าได้ ซึ่งเราสามารถประกาศได้ 2 แบบ คือ
- แบบแรก ใช้
array()
ในการประกาศ
<?php
$days = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
?>
- แบบที่สอง ใช้
[]
ในการประกาศ
<?php
$days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
?>
เราจะจะใช้ print_r()
เพื่อดูข้อมูลใน Array ว่ามีอะไรบ้าง
<?php
print_r($days);
// Array ( [0] => Monday [1] => Tuesday [2] => Wednesday [3] => Thursday [4] => Friday [5] => Saturday [6] => Sunday )
?>
หรือจะใช้ var_dump()
ก็ได้เหมือนกัน
<?php
var_dump($days);
// array(7) { [0]=> string(6) "Monday" [1]=> string(7) "Tuesday" [2]=> string(9) "Wednesday" [3]=> string(8) "Thursday" [4]=> string(6) "Friday" [5]=> string(8) "Saturday" [6]=> string(6) "Sunday" }
?>
เราสามารถเข้าถึงข้อมูลใน Array ได้โดยการใช้ []
และใส่ index ของข้อมูลที่เราต้องการเข้าถึง
<?php
echo $days[0]; // Monday
?>
เราสามารถเก็บข้อมูลต่างชนิดกันได้ใน Array ได้
<?php
$person = ['9mza', 60, true];
?>
Associative Array
Associative Array คือ ตัวแปรที่สามารถเก็บข้อมูลหลายๆ ค่าได้ แต่จะเก็บข้อมูลแบบ key-value ซึ่งเราสามารถประกาศได้โดยใช้ array()
และใส่ key และ value ของข้อมูลที่เราต้องการเก็บ
<?php
$person = array('name' => '9mza', 'age' => 60, 'isMale' => true);
?>
เราสามารถเข้าถึงข้อมูลใน Associative Array ได้โดยการใช้ []
และใส่ key ของข้อมูลที่เราต้องการเข้าถึง
<?php
echo $person['name']; // 9mza
?>
เราสามารถเพิ่มข้อมูลใหม่เข้าไปใน Associative Array ได้โดยการใช้ []
และใส่ key ของข้อมูลที่เราต้องการเพิ่ม
<?php
$person['height'] = 170;
?>
หรือจะแก้ไขข้อมูลใน Associative Array ได้โดยการใช้ []
และใส่ key ของข้อมูลที่เราต้องการแก้ไข
<?php
$person['name'] = 'Bandit';
?>
Object
Object คือ ตัวแปรที่สามารถเก็บข้อมูลหลายๆ ค่าได้ ซึ่งเราสามารถประกาศได้โดยใช้ new
และชื่อคลาส
$date = new DateTime();
เราสามารถเข้าถึงข้อมูลใน Object ได้โดยการใช้ ->
และชื่อของ property ที่เราต้องการเข้าถึง
<?php
echo $date->format('Y-m-d H:i:s');
?>
Null
Null คือ ค่าที่ไม่มีค่า ซึ่งเราสามารถประกาศได้โดยใช้ null
<?php
$name = null;
?>
Null เป็น Case insensitive ซึ่งหมายความว่า NULL
กับ null
จะถือว่าเป็นค่าเดียวกัน
Resource
Operator
Operator คือ ตัวดำเนินการ ซึ่งเราสามารถใช้ตัวดำเนินการเพื่อเปลี่ยนแปลงค่าของตัวแปรได้ โดยมีตัวดำเนินการทั้งหมด 4 ประเภท ได้แก่
- Arithmetic Operator
- Assignment Operator
- Comparison Operator
- Logical Operator
Arithmetic Operator
Arithmetic Operator คือ ตัวดำเนินการที่ใช้ในการคำนวณค่าตัวเลข โดยมีตัวดำเนินการทั้งหมด 5 ตัว ได้แก่
+
บวก-
ลบ*
คูณ**
ยกกำลัง/
หาร%
หารเอาเศษ
<?php
$a = 10;
$b = 5;
echo $a + $b; // 15
echo $a - $b; // 5
echo $a * $b; // 50
echo $a ** $b; // 100000
echo $a / $b; // 2
echo $a % $b; // 0
?>
Assignment Operator
Assignment Operator คือ ตัวดำเนินการที่ใช้ในการกำหนดค่าให้กับตัวแปร โดยมีตัวดำเนินการทั้งหมด 5 ตัว ได้แก่
=
กำหนดค่า+=
บวกแล้วกำหนดค่า-=
ลบแล้วกำหนดค่า*=
คูณแล้วกำหนดค่า/=
หารแล้วกำหนดค่า%=
หารเอาเศษแล้วกำหนดค่า
<?php
$a = 10;
$b = 5;
$a += $b; // $a = $a + $b = 15
$a -= $b; // $a = $a - $b = 5
$a *= $b; // $a = $a * $b = 50
$a /= $b; // $a = $a / $b = 2
$a %= $b; // $a = $a % $b = 0
?>
Comparison Operator
Comparison Operator คือ ตัวดำเนินการที่ใช้ในการเปรียบเทียบค่า โดยมีตัวดำเนินการทั้งหมด 6 ตัว ได้แก่
==
เท่ากับ===
เท่ากับและเป็นชนิดเดียวกัน!=
ไม่เท่ากับ!==
ไม่เท่ากับและไม่เป็นชนิดเดียวกัน>
มากกว่า<
น้อยกว่า>=
มากกว่าหรือเท่ากับ<=
น้อยกว่าหรือเท่ากับ
<?php
$a = 10;
$b = 5;
echo $a == $b; // false
echo $a === $b; // false
echo $a != $b; // true
echo $a !== $b; // true
echo $a > $b; // true
echo $a < $b; // false
echo $a >= $b; // true
echo $a <= $b; // false
?>
ความแตกต่างระหว่าง ==
กับ ===
คือ ==
จะเปรียบเทียบค่าเท่ากัน แต่ ===
จะเปรียบเทียบค่าเท่ากันและเป็นชนิดเดียวกัน
<?php
$a = 10;
$b = "10";
echo $a == $b; // true
echo $a === $b; // false
?>
Logical Operator
Logical Operator คือ ตัวดำเนินการที่ใช้ในการเปรียบเทียบค่า โดยมีตัวดำเนินการทั้งหมด 3 ตัว ได้แก่
&&
ความหมายคือ และ โดยจะเป็นจริงเมื่อทั้งสองเงื่อนไขเป็นจริง||
หรือor
ความหมายคือ หรือ โดยจะเป็นจริงเมื่ออย่างน้อยหนึ่งเงื่อนไขเป็นจริง!
ความหมายคือ ไม่เท่ากับ จะเป็นจริงเมื่อเงื่อนไขเป็นเท็จxor
จะคล้ายๆ กับหรือ แต่จะแตกต่างกันตรง จะเป็นจริงเมื่อเงื่อนไขเป็นจริงเพียงอย่างเดียว
<?php
$a = 10;
$b = 5;
echo $a > 5 && $b < 10; // true
echo $a > 5 || $b < 10; // true
echo !($a > 5); // false
echo $a > 5 xor $b < 10; // false
echo $a > 5 xor $b > 10; // true
?>
Conditionals
Conditionals คือ เงื่อนไขในการทำงานของโปรแกรม
If , Else if , Else
การทำงานของ If ก็คือจะทำงานใน block if ถ้าเงื่อนไขนั้นเป็นจริง แต่ถ้าเงื่อนไขเป็นเท็จ จะทำงานใน block else แทน
<?php
$a = 10;
$b = 5;
if ($a > $b) {
echo "a is greater than b";
} else {
echo "a is less than b";
}
?>
ถ้าต้องการเพิ่มเงื่อนไข สามารถใช้ else if ได้
<?php
$grade = 75;
if ($grade >= 80) {
echo "A";
} else if ($grade >= 70) {
echo "B";
} else if ($grade >= 60) {
echo "C";
} else if ($grade >= 50) {
echo "D";
} else {
echo "F";
}
// Result: B
?>
Switch
Switch จะคล้ายกับ If แต่จะเขียนในลักษณะเป็น case แทน ซึ่งถ้าเข้าเงื่อนไขไหน ก็จะทำงานใน case นั้น
<?php
$grade = 75;
switch ($grade) {
case $grade >= 80:
echo "A";
break;
case $grade >= 70:
echo "B";
break;
case $grade >= 60:
echo "C";
break;
case $grade >= 50:
echo "D";
break;
default:
echo "F";
}
// Result: B
?>
Ternary Operator
Ternary Operator คือ If แบบลดรูป โดยจะเขียนเป็น condition ? true : false
คือ ถ้าเงื่อนไขเป็นจริง จะทำงานใน block true แต่ถ้าเงื่อนไขเป็นเท็จ จะทำงานใน block false
<?php
$today = "Monday";
echo $today == "Monday" ? "Go to work" : "Go to Rest";
Loop
Loop คือ การทำงานซ้ำๆ จนกว่าเงื่อนไขจะเป็นเท็จ โดยมี 3 ประเภทคือ
for
จะทำงานก่อน แล้วจึงตรวจสอบเงื่อนไขwhile
จะตรวจสอบเงื่อนไขก่อน แล้วจึงทำงานdo while
จะทำงานก่อน 1 ครั้ง แล้วจึงตรวจสอบเงื่อนไข
For
<?php
for ($i = 0; $i < 10; $i++) {
echo $i;
}
?>
While
<?php
$i = 0;
while ($i < 10) {
echo $i;
$i++;
}
?>
Do While
<?php
$i = 0;
do {
echo $i;
$i++;
} while ($i < 10);
?>
Foreach
Foreach จะใช้กับ Array โดยจะทำงานตามจำนวนของ Array ที่เรากำหนด
<?php
$fruits = ["Apple", "Banana", "Orange"];
foreach ($fruits as $fruit) {
echo $fruit;
}
?>
เราสามารถใช้ Foreach กับ Array ที่มี Key ได้ด้วย
<?php
$fruits = [
"Apple" => "🍎",
"Banana" => "🍌",
"Orange" => "🍊"
];
foreach ($fruits as $key => $value) {
echo $key . " " . $value; // Apple 🍎 Banana 🍌 Orange 🍊
}
?>
Exercise
หลังจากที่เราได้เรียนรู้หลายๆ เรื่องไปแล้ว มาลองทำแบบฝึกหัดกันดูกันบ้าง
$peoples = [
["name" => "John", "age" => 20],
["name" => "Peter", "age" => 18],
["name" => "Mary", "age" => 13],
["name" => "Jane", "age" => 30],
["name" => "Bob", "age" => 14],
["name" => "Alice", "age" => 24],
["name" => "Steve", "age" => 17],
["name" => "Kevin", "age" => 19],
["name" => "David", "age" => 21],
["name" => "Tom", "age" => 23],
];
$adult_count = 0;
$teen_count = 0;
$can_apply_job = 0;
foreach ($peoples as $people) {
if ($people["age"] >= 18) {
$adult_count++;
} else {
$teen_count++;
}
if ($people["age"] >= 18 && $people["age"] <= 25) {
$can_apply_job++;
}
}
echo "Adult: " . $adult_count . " Teen: " . $teen_count . " Can Apply Job: " . $can_apply_job;
Break and Continue
Break
Break จะใช้ในการหยุดการทำงานของ Loop
ตัวอย่าง ต้องการให้หยุดการทำงานเมื่อ i เท่ากับ 5
<?php
for ($i = 0; $i < 10; $i++) {
if ($i == 5) {
break;
}
echo $i;
}
?>
// 01234
Continue
Continue จะใช้ในการข้ามการทำงานของ Loop ไปยัง Loop ถัดไป
ตัวอย่าง ต้องการให้ข้ามการทำงานเมื่อ i เท่ากับ 5
<?php
for ($i = 0; $i < 10; $i++) {
if ($i == 5) {
continue;
}
echo $i;
}
// 012346789
?>
Add PHP Loop and Condition to HTML
หลังจากที่เราได้เรียนเรื่อง Loop มาบ้างแล้ว ทีนี้เราลองนำมันมาแสดงผลบน HTML กันดูบ้าง (ผมจะคิดไปเองว่าท่านเข้าใจ HTML อยู่แล้ว 😁)
โดยเราจะเริ่มสร้างโครง HTML กันก่อน
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body></body>
</html>
จากนั้นเราจะแทรก PHP ลงไปในส่วนของ Body
<?php
$countries = [
"Thailand" => "🇹🇭",
"Japan" => "🇯🇵",
"China" => "🇨🇳",
"Korea" => "🇰🇷",
"USA" => "🇺🇸",
];
foreach ($countries as $country => $flag) {
echo "<p>$country $flag</p>";
}
?>
หรือจะ Loop แบบนี้ก็ได้
<?php
$countries = [
"Thailand" => "🇹🇭",
"Japan" => "🇯🇵",
"China" => "🇨🇳",
"Korea" => "🇰🇷",
"USA" => "🇺🇸",
];
foreach ($countries as $key => $value) : ?>
<p> <?= $key ?> <?= $value ?> </p>
<?php endforeach; ?>
เปิด Browser แล้วเราจะเห็นผลลัพธ์ดังนี้
