PHP Basic

Web Development

PHP Basic

สำหรับคนที่เริ่มต้นเขียน PHP หรืออยากจะเรียนรู้เกี่ยวกับ PHP ให้มากขึ้น ลองมาอ่านบทความนี้กัน

มากกว่า 1 ปีที่ผ่านมา

8 min read

ในครั้งก่อนผมได้ทำบทความเกี่ยวกับ PHP นั่นก็คือ มาเริ่มเรียนเขียนโปรแกรมด้วยภาษา PHP กันเถอะ (PHP for Beginners) ซึ่งจะแตกต่างจากบทความนี้ตรงที่ บทความนี้จะเน้นแทบทุกเรื่องที่ต้องใช้ใน PHP โดยบทความที่ผมเขียนก่อนหน้า อาจจะข้ามหลายๆ เรื่องไป แต่บทความนี้จะเจาะลึกมากกว่าบทความก่อนหน้า ต้องขอออกตัวก่อนว่า ผมพึ่งจะเริ่มหัดเขียน PHP ได้ไม่นานเท่าไหร่ แต่ผมจะพยายามที่จะเขียนบทความนี้ให้ครบทุกเรื่องที่เกี่ยวข้องกับ PHP และอธิบายให้เข้าใจง่ายมากที่สุด

Introduction

มารู้จัก PHP เพิ่มอีกสักนิด PHP คือ server-side scripting ที่ออกแบบมาสำหรับการใช้งานบนเว็บ หมายความว่า มันถูกออกแบบมาสำหรับการทำงานที่ฝั่ง Server ซึ่งหากใครที่เริ่มทำเว็บมาบ้างจะได้ยินคำว่า Server Side และ Client Side อยู่บ่อยๆ

Pre-requisites

ก่อนจะไปเริ่มต้นเขียน PHP กัน เราจะเป็นที่จะต้องติดตั้ง PHP ไว้ในเครื่องก่อน ซึ่งผมก็มีการติดตั้งอยู่หลากหลายแบบด้วยกัน เริ่มตั้งแต่

ติดตั้ง PHP

หรือจะโปรแกรมที่มัดรวมทุกอย่างมาให้แล้วก็

  • Laragon 🐘 สำหรับ Windows ผมแนะนำอันนี้ เป็นพิเศษ
  • MAMP
  • XAMPP
  • WAMP

ติดตั้ง Editor

Editor ใครจะใช้อันไหนก็ตามสะดวกเลยนะ ถ้าเตรียมเครื่องมือทุกอย่างพร้อมแล้ว ก็ไปเริ่มต้นเขียน PHP กันเลย

Echo

ก่อนจะไปเรื่องอื่น เราลองมาแสดงค่าอะไรบางอย่างออกทางหน้าจอกันก่อน เพื่อเช็คว่า PHP สามารถทำงานได้ โดยเราจะใช้คำสั่ง echo ในการแสดงค่าออกทางหน้าจอ

แต่ก่อนที่เราจะใช้คำสั่ง เราจำเป็นที่จำต้องเปิด tag <?php ขึ้นมาก่อน เพื่อที่จะบอกว่า ต้องส่วนนี้คือส่วนที่เป็นภาษา PHP และปิด tag ด้วย ?> เมื่อจบคำสั่ง PHP มาลองดูกัน

ผมจะทำการสร้าง folder สำหรับ Project PHP แล้ว สร้างไฟล์ index.php ขึ้นมา และเขียนคำสั่ง echo ดังนี้

<?php
  echo 'Hello World!';
?>
echo PHP
echo PHP

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

แล้วเปิด Browser ขึ้นมา แล้วพิมพ์ localhost:8000 ลงไป จะได้ผลลัพธ์ดังนี้

วิธีการรันไฟล์ก็อยู่ที่เครื่องมือที่ท่านใช้เลยนะ หลายท่านอาจจะไม่ได้ใช้ PHP CLI เหมือนกับผม วิธีการจะแตกต่างกันไป แต่หลักๆ ก็คือ ต้องมี Server ที่รองรับ PHP ให้ทำงาน และเปิดไฟล์ index.php ขึ้นมาให้เรา จะใช้เครื่องมือไหน ก็ตามสะดวกเลย

echo PHP
echo 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 แล้วเราจะเห็นผลลัพธ์ดังนี้

foreach PHP
foreach PHP

Tags:

PHP