PHP: PHP Hypertext Preprocessor

Home

PHP Tutorial
Knowledge Developer Database Internet Resource
ภาษา PHP
1. ประเภทข้อมูล
2. การแปลงประเภทข้อมูล
3. ตัวแปรและค่าคงที่
4. Operator
5. การใช้ Operator คำนวณผลรวมของฟอร์ม
6. โครงสร้างควบคุม
 
PHP เบื้องต้น
1. เริ่มต้นด้วย PHP
2. ภาษา PHP
3. การทำงานไฟล์ และไดเรคทอรี
4. การทำงานกับ Array
5. การควบคุมข้อความ และนิพจน์ปกติี่
6. คำสั่งใช้ใหม่และฟังก์ชัน
7. Object Oriented Programming
 
PHP
PHP เบื้องต้น
การสร้างโปรแกรมประยุกต์เว็บ
PHP ระดับสูง
 
Internet
PHP
SSI
HTML
AJAX
 
PHP เบื้องต้น > ภาษา PHP

โครงสร้างควบคุม

โครงสร้างควบคุมคือ โครงสร้างภายในภาษาคอมพิวเตอร์ที่ใช้ควบคุมการไหล เมื่อทำการประมวลผลบนโปรแกรมหรือสคริปต์  โดยสามารถจัดกลุ่มเป็นโครงสร้างเงื่อนไข  (เช่น if) และโครงสร้างวนรอบ หรือ loop (เช่น do)

ประโยคคำสั่ง  if

ประโยคคำสั่ง if ใช้ในการตัดสินใจ  โดยต้องให้ เงื่อนไขกับประโยคคำสั่ง if ใช้งาน  ถ้าเงื่อนไขเป็นจริง กลุ่มคำสั่ง (block code) จะได้รับการประมวลผล  เงื่อนไขในประโยคคำสั่ง if ต้องอยู่ในวงเล็บ

ตัวอย่างเช่น  ถ้าการสั่งไม่มีจำนวนยาง น้ำมัน หรือ หัวเทียน  ซึ่งอาจจะเกิดจากการคลิกปุ่ม submit อย่างไม่ตั้งใจ  นอกจากบอกว่า "ประมวลผลแล้ว" แล้ว เพจควรให้ข่าวสารที่มีประโยชน์

เมื่อ การสั่งซื้อไม่มีรายการ  อาจจะบอกว่า "ท่านไม่ได้ทำรายการสั่งซื้อจากหน้าก่อน"

if ($ totalqty == 0)
    echo "ท่านไม่ได้ทำรายการสั่งซื้อจากหน้าก่อน<br/>";

เงื่อนไข  $totalqty == 0 เป็นจริง ถ้า $totalqty เท่ากับศูนย์ ถ้า $totalqty ไม่เท่ากับศูนย์ เงื่อนไขนี้เป็น FALSE เมื่อ เงื่อนไขเป็น TRUE ประโยคคำสั่ง echo จะได้รับการประมวลผล

code block  ถ้ามีประโยคคำสั่งมากกว่า 1 ชุด ที่ต้องประมวลผลภายในประโยคคำสั่งนั้น สามารถจัดประโยคคำสั่งเป็นกลุ่มคำสั่ง โดยประกาศกลุ่ม ด้วยการล้อมด้วยเครื่องหมายปีกกา { }

if ($ totalqty == 0)
{

echo "<font color = red>";
echo "ท่านไม่ได้ทำรายการสั่งซื้อจากหน้าก่อน<br/>";
echo "</font>";

}

หมายเหตุ    ควรใช้ย่อหน้าเพื่อทำให้คำสั่งอ่านง่ายขึ้น เช่น กลุ่มคำสั่งของ if ให้มีการย่อหน้ากลุ่มคำสั่ง

ประโยคคำสั่ง  else

โดยส่วนใหญ่ การตัดสินใจ ไม่ต้องการเพียง 1 การกระทำ แต่ต้องการชุดการกระทำที่เป็นไปได้สำหรับการทำงานประโยคคำสั่ง else ยอมให้กำหนดการกระทำทางเลือกเพื่อนำมาใช้ เมื่อเงื่อนไขในประโยค if เป็น FALSE ตามตัวอย่าง เมื่อการเตือนลูกค้า จากการส่งใบสั่งซื้อที่ไม่มีรายการ ในทางตรงข้าม ถ้ามีการสั่งซื้อจริงควรมีการแสดงรายละเอียดสั่งซื้อ

if ($ totalqty == 0)
{

echo "ท่านไม่ได้ทำรายการสั่งซื้อจากหน้าก่อน<br/>";

}
else
{

echo $soapqty." ก้อน<br>";
echo $shampooqty." ขวด<br>";
echo $conditionerqty." ขวด<br>";

}

ประโยคคำสั่ง if สามารถนำไปสร้าง กระบวนการทางตรรกะซับซ้อนได้ ตัวอย่างคำสั่งต่อไป ไม่เป็นเพียงการสรุปตามเงื่อนไข $totalqty = =0 เป็น TRUE แต่สามารถให้แต่ละบรรทัด สรุปในการแสดงผลตามเงื่อนไขของตัวเอง

if ($ totalqty == 0)
{

echo "ท่านไม่ได้ทำรายการสั่งซื้อจากหน้าก่อน<br/>";

}
else
{

if ($soapqty >0)
    echo $soapqty." ก้อน<br/>";
if ($shampooqty > 0)
    echo $shampooqty." ขวด<br/>";
if ($conditionerqty > 0)
    echo $conditionerqty." ขวด<br/>";

}

ประโยคคำสั่ง elseif

ถ้าการตัดสินใจ มีทางเลือกมากกว่า 2 ทาง เลือก ประโยคคำสั่ง elseif สามารถสร้างได้หลายทางเลือก โดยประโยคคำสั่งนี้ เป็นการรวมประโยคคำสั่ง else และ if 

ตัวอย่างการให้ส่วนลดในการซื้อแชมพูขึ้นกับขนาดการสั่ง

  1. น้อยกว่า  10  ขวด  ไม่มีส่วนลด
  2. 10  -  29 ขวด  ส่วนลด 5%
  3. 30  -  49 ขวด ส่วนลด  10%
  4. 50 หรือมากกว่า  ส่วนลด  15%

การคำนวณส่วนลด สามารถใช้ประโยคคำสั่ง if และ elseif  โดยมีความจำเป็นในการใช้ AND เพื่อรวม  2 เงื่อนไขเข้าด้วยกัน

if ($shampooqty < 10)
    discount = 0;
elseif ($shampooqty >= 10 && $shampooqty < 29)
    discount = 5;
elseif ($shampooqty >= 30 && $shampooqty < 49)
    discount = 10;
elseif ($shampooqty >= 50 )
    discount = 15;

ประโยคคำสั่ง  switch

ประโยคคำสั่ง  switch ทำงานแบบเดียวกับประโยคคำสั่ง if  แต่ยอมให้เงื่อนไขมีมากกว่า 2 ค่า การควบคุมแต่ละค่า ใช้ประโยคคำสั่ง case สำหรับ default case ใช้ควบคุมค่าอื่น นอกเหนือจากประโยคคำสั่ง case ที่เจาะจงไว้

ตัวอย่าง เช่น ต้องการทราบการโฆษณาแบบใดมีความเหมาะสม ในกรณีนี้สามารถเพิ่มคำถามในใบสั่งซื้อ  ให้เพิ่มคำสั่ง HTML กับใบสั่งซื้อ และ ฟอร์มจะมีลักษณะตามภาพ 1.2.2

<tr>
<td>ท่านรู้จัก พูนพนา อย่างไร</td>
<td><select name="find">
<option value = "a">ลูกค้าปกติ
<option value = "b">โฆษณาทางโทรทัศน์
<option value = "c">สมุดโทรศัพท์หน้าเหลือง
<option value = "d">เพื่อนบอก
</select>
</td>
</tr>

คำสั่ง HTML นี้ เพิ่มตัวแปรใหม่ที่มีค่าเป็น "a"  "b"  "c" หรือ "d" การควบคุมตัวแปรใหม่ด้วยชุดของประโยคคำสั่ง if และ elseif ในลักษณะนี้

if ($find =="a")
    echo "<p>ลูกค้าปกติ</p>";
elseif ($find =="b")
    echo "<p>ลูกค้าจากโฆษณาทางโทรทัศน์</p>";
elseif ($find =="c")
    echo "<p>ลูกค้าจากสมุดโทรศัพท์หน้าเหลือง</p>";
elseif ($find =="d")
    echo "<p>ลูกค้าจากเพื่อนบอก</p>";


ภาพ 1.2.2 ใบสั่งซื้อที่ถามลูกค้าว่ารู้จัก พูนพนา อย่างไร

ถ้าเขียนด้วยประโยคคำสั่ง switch ได้ดังนี้

switch case ($find)
{

case "a" :
    echo "<p>ลูกค้าปกติ</p>";
    break:
case "b" :
    echo "<p>ลูกค้าจากโฆษณาทางโทรทัศน์</p>";
    break;
case "c" :
    echo "<p>ลูกค้าจากสมุดโทรศัพท์หน้าเหลือง</p>";
    break;
case "d" :
    echo "<p>ลูกค้าจากเพื่อนบอก</p>";
    break;
default :
    echo "<p>เราไม่ทราบว่าลูกค้าพบเราอย่างไร</p>";
    break;

}

ประโยคคำสั่ง switch มีพฤติกรรมต่างจากประโยค if หรือ  elseif ประโยคคำสั่ง if ทำงานกับ 1 ประโยคคำสั่ง ถ้าไม่มีวงเล็บปีกกา ส่วน switch  ทำงานต่างกัน เมื่อ case ใน switch เข้าสู่การประมวลผล  PHP จะประมวลผลประโยคคำสั่งจนกระทั่งพบ break ถ้าไม่มี break การประมวลผลของ  switch จะทำงานต่อไปจนถึง case ที่เป็น TRUE  เมื่อมาถึง break บรรทัดต่อไปของคำสั่ง หลังจากประโยคคำสั่ง switch จะได้รับการประมวลผล

while loop

คอมพิวเตอร์ทำงานแบบประมวลผลซ้ำได้ดี ถ้ามีการคำนวณตามจำนวนครั้งจะสามารถใช้ loop เพื่อทำงานบางส่วนของโปรแกรมซ้ำ
พูนพนา ต้องการตารางแสดงค่าขนส่งที่จะเพิ่มในใบสั่งซื้อของลูกค้า ค่าขนส่งของบริษัทขนส่งขึ้นกับระยะทางในการส่งพัสดุ ค่าใช้จ่ายสามารถแสดงผลด้วยสูตรง่ายๆ ตามภาพ 1.2.3


ภาพ 1.2.3 แสดงค่าขนส่งตามระยะทาง

while loop เป็นการทำงานวนรอบง่ายที่สุดของ PHP ซึ่งเหมือนกับประโยคคำสั่ง if ที่ขึ้นกับเงื่อนไขความแตกต่างระหว่าง while loop กับ ประโยคคำสั่ง if คือ ประโยคคำสั่ง if ประมวลผลกลุ่มคำสั่งเพียงครั้งเดียว ถ้าเงื่อนไขเป็นจริง while loop ประมวลผลกลุ่มคำสั่งซ้ำ ตราบเท่าที่เงื่อนไขเป็นจริง โดยทั่วไป while loop ใช้ เมื่อไม่ทราบจำนวนรอบประมวลผล

ไวยากรณ์พื้นฐานของ  while loop  คือ
while (condition) expression

ตัวอย่าง  while loop  แสดงหมายเลข จาก 1 ถึง 5

<?php  

$num = 1;
while ($num <= 5)
{
    echo $num."<br/>";
    $num++;
}

?>

จุดเริ่มต้นของแต่ละรอบ  คือ การทดสอบเงื่อนไข  ถ้าเงื่อนไขเป็นเท็จ จะไม่มีการประมวลผล และสิ้นสุด loop ประโยคคำสั่งต่อไป หลังจาก  loop  จะได้รับการประมวลผลต่อไป

for loop

for loop  สามารถทำงานกับตัวนับได้ดี

ไวยากรณ์พื้นฐานของ  for loop  คือ
for (expression1;  condition ; expression2)
expression3;

expression1 ประมวลผลเพียงครั้งเดียวเมื่อเริ่มต้นตามปกติใช้ทำค่าเริ่มต้นของตัวนับ
condition ทดสอบนิพจน์ ก่อนเริ่มแต่ละรอบ ถ้านิพจน์ส่งออกมีค่าเป็นเท็จจะเป็นการสิ้นสุดรอบการทำงาน  ตามปกติ ใช้ทดสอบตัวนับกับขอบเขต
expression2  ประมวลผลตอนท้ายแต่ละรอบ  ตามปกติเป็นชุดคำสั่ง for loop สามารถเขียนแสดงตารางค่าขนส่ง  ตามภาพ 2.3 โดยมีคำสั่ง PHP ดังนี้

<?php

for ($distance = 50; $distance <= 250; $distance += 50)
{
    echo "<tr>\n  <td align = right>$distance</td>\n";
    echo "  <td align = right>". $distance / 10 ."</td>\n</tr>\n";
}

?>

เมื่อเปรียบเทียบ while loop กับ for loop  ในการทำงานแบบเดียวกัน  for loop  มีความกะทัดรัดมากกว่า  โดยประหยัด  2  บรรทัด

do… while loop

ประเภท  loop สุดท้าย  มีความแตกต่างเล็กน้อย  โครงสร้างทั่วไปของประโยคคำสั่ง do while คือ
do
expression;
while (condition);

do…while loop  แตกต่างจาก  while loop  เพราะเงื่อนไขทดสอบตอนท้าย  หมายความว่าใน do…while loop  ต้องมีการประมวลผลภายใน  loop  อย่างน้อย 1 ครั้ง

ถึงแม้ว่า เงื่อนไขเป็นเท็จ เมื่อเริ่มต้น และไม่มีทางเป็นจริง  loop จะได้รับการประมวลผล 1 ครั้ง ก่อนการตรวจสอบเงื่อนไขและสิ้นสุด

<?

$num = 100;
do
{
    echo $num."<br/>";
}
while ($num < 1);

?>

การออกจากโครงสร้างควบคุม

ถ้าต้องการหยุดการประมวลผลคำสั่ง  มี 3 วิธี ขึ้นกับผลที่ต้องการ

  1. ถ้าต้องการหยุดการประมวลผล  loop สามารถใช้ประโยคคำสั่ง break ตามการอภิปรายในส่วน switch  ถ้าใช้ประโยคคำสั่ง break ใน loop การประมวลผลสคริปต์  จะทำงานบรรทัดต่อไปของ สคริปต์ ต่อจาก  loop
  2. ถ้าต้องการกระโดดไปยังรอบต่อไป  สามารถใช้ประโยคคำสั่ง  continue
  3. ถ้าต้องการสิ้นสุดประมวลผลสคริปต์  PHP สามารถใช้ exit ตามปกติใช้เมื่อเกิดความผิดพลาด ตัวอย่างเช่น ใช้ปรับปรุงตัวอย่างก่อนได้ดังนี้

ตัวอย่างการใช้ break และ continue

<?php

$a = 0;
while($a < 1000)
{

$a++;
echo "\$a ขณะนี้ คือ : $a<br/>";

// localtime() ส่งออก array
// ชั่วโมง คือ key / ดัชนี 2, รูปแบบ 24 ชั่วโมง
//
$now = localtime()
if ($now[2] > 15)                       // เงื่อนไขไม่ทำงานหลัง 15.00 น.
break;

}

// พิมพ์เฉพาะเลขคู่
for ($b = 0; $b < 1000; $b++)
{

if ($b % 2 == 0)
continue;
echo "\$b ขณะนี้ คือ : $b<br/>";

}

for ($x = 0; $x < 10; $x++)
{

echo $x
for($y = 15; $y < 20; $y++)
{

// บอกให้ PHP ออกจาก loop นี้ และต่อ loop นอก
if ($y == 17)
continue 2;

echo $y

}

}

?>

ตัวอย่างการใช้ exit

if ($ totalqty == 0)
{

echo "ท่านไม่ได้ทำรายการสั่งซื้อจากหน้าก่อน<br/>";
exit;

}

การเรียก  exit เพื่อหยุด PHP จากการประมวลผลสคริปต์ส่วนที่เหลือ


  

สงวนลิขสิทธิ์ (C) widebase / Julaphak