ภาษา PHP

ประเภทข้อมูล

การทำงานกับประเภทข้อมูลของ PHP แตกต่างจากภาษาอื่นเล็กน้อย โดย PHP เป็นภาษา richly typed ที่ตัวแปรไม่ต้องมีการประกาศเป็นประเภทข้อมูลเจาะจง เพราะ engine กำหนดประเภทที่ใช้ตามกฎ บางครั้งเรียกสิ่งนี้ว่าประเภทข้อมูลไดนามิคส์

PHP สนับสนุนประเภทข้อมูล

  1. integer
  2. float หรือ double
  3. string
  4. boolean
  5. array
  6. object

Integer

integer คือจำนวนเต็ม ตามปกติความแม่นยำขึ้นกับระบบปฏิบัติการ ส่วนใหญ่เป็นขนาด 32 บิต ใน PHP ไม่มี unsigned integer ดังนั้นค่ามากที่สุดของจำนวนเต็มคือ 2 พันล้าน เมื่อเกินจำนวนมากที่สุดของ integer ใน PHP จะแปลงไปเป็น float แทนที่จะไปเป็นจำนวนเต็มลบเหมือนภาษาอื่น

<?php

$large = 2147483647;
var_dump($large);

$large = $large + 1;
var_dump($large);

?>

ผลลัพธ์ คือ
Int(2147483647)                  float(2147483648)

integer ระบุในคำสั่งเป็นระบบเลขฐาน 8, ฐาน 10 หรือ ฐาน 16 ได้

การหารเลขจำนวนเต็มใน PHP จะไม่ให้ผลลัพธ์เป็นจำนวนเต็ม เช่น นิพจน์
5 / 2
PHP มีผลลัพธ์คือ 2.5 ด้วยประเภทข้อมูล float แทนที่จะเป็นจำนวนเต็ม 2 เหมือนกับภาษาอื่น ถ้าต้องการค่าจำนวนเต็มจากการหาร ต้องมีการแปลงค่าเป็นจำนวนเต็ม หรือใช้ฟังก์ชัน round

Float

float คือจำนวนทศนิยมหรือจำนวนจริง มีขนาด 64 บิตด้วยความแม่นยำของทศนิยม 14 ตำแหน่ง PHP ไม่ได้แบ่งออกเป็น single และ double ตามความแม่นยำเหมือนกับภาษาอื่น อย่างไรก็ตาม PHP ยอมรับคีย์เวิร์ด double เพิ่มเติมจาก float ที่มีความหมายตรงกัน

<?php

$floatvar1 = 8.457;
$floatvar2 = 5.23e3; // เหมือนกับ 5230.0
$floatvar3 = 7.2e+4; // เหมือนกับ 72000.0
$floatvar4 = 1.234e-4; // เหมือนกับ 0.0001234
$floatvar5 = 100000000000; // ใหญ่เกินไปสำหรับ integer แปลงเป็น float

?>

ข้อควรระวัง      สำหรับ float ควรระวังความจำกัดด้านความแม่นยำ การคำนวณที่ต้องการความแม่นยำสูงอาจจะมีปัญหาได้ แต่การประยุกต์ทั่วไปควรจะเพียงพอ

String

string เป็นชุดของตัวอักษร ใน PHP ตัวอักษรมีค่า 8 บิต
ค่า string ระบุได้ 3 วิธี

Single Quoted

ข้อความ single quoted เป็นชุดตัวอักษรที่เริ่มต้นและปิดท้ายด้วย single quote(‘)
echo ‘ข้อความ single quote’;

ในการรวม single quote ภายในข้อความให้วาง backslash (\) ด้านหน้า ที่เรียกว่าตัวอักษร escape
echo ‘การแสดง single quote \’ ‘;

Double Quoted

ข้อความ double quoted คล้ายกับข้อความ single quoted ยกเว้น ตัวประมวลผลภาษา PHP ตัดสิ่งเหล่านี้เพื่อค้นหาและแทนที่ ชุดตัวอักษร escape และตัวแปร
นอกจากนี้ตัวอักษร escape \” ต้องการแทรก double quote ภายในข้อความ double quoted ต่อไปเป็นชุด escape ที่ PHP รู้จัก

ตาราง 1.2.1 escape

Escape ผลลัพธ์
\n ตัวอักษรขึ้นบรรทัดใหม่ (char(10) หรือ 0x0a/10 ใน ASCII)
\r ตัวอักษร Carriage return (char(13) หรือ 0x0a/13 ใน ASCII)
\t ตัวอักษรแท็บ
\\ ตัวอักษร backslash
\$ ตัวอักษรดอลลาร์
ตัวเลขฐานแปด ตัวอักษรที่แสดงโดยค่าในช่วง 0-255 ด้วยการระบุเป็นเลขฐานแปด
\xตัวเลขฐานสิบ ตัวอักษรที่แสดงโดยค่าในช่วง 0-255 ด้วยการระบุเป็นเลขฐานสิบ

PHP ไม่สนับสนุนตัวอักษร escape อื่น และถ้าไม่ตรงกับชุดตัวอักษรตามตาราง 1.1 จะพิมพ์ backslash และตัวอักษรนั้น

<?php

echo “ข้อความ double quote “;
echo “<br/>”;
echo “แสดงผล double quote \” – \” “;
echo “<br/>”;
echo “แสดงผล double quote 42 – 42 “;
echo “<br/>”;
echo “แสดงผล backslash และ ก \ก “;
echo “<br/>”;

?>

Heredoc Notation

วิธีที่ 3 สำหรับข้อความนำส่วนหัวในสคริปต์ PHP คือใช้ไวยากรณ์ heredoc ไวยากรณ์นี้เหมือนกับสคริปต์ PERL และ Bourne Shell ข้อความเริ่มต้นด้วย <<< และ identifier จนกระทั้งสิ้นสุดด้วย identifier วางชิดซ้ายและ semicolon (;)

<?php

echo <<<TITLE
<h1 align=”center”>แสดงข้อความด้วย Heredoc</h1>
<p>การแสดงข้อความด้วย heredoc

สามารถทำงานกับข้อความได้สะดวก <br/>
การเว้นบรรทัดใช้ br tag <br/>
</p>

TITLE;
?>

ห้ามวางเครื่องหมายต่าง เช่น จุด คูณ บวก ติดกับ identifier จะมีผลต่อการกระจายของ PHP

Boolean

boolean เป็นประเภทข้อมูลง่ายที่สุดใน PHP และ แสดงเป็นค่าไบนารี TRUE หรือ FALSE, YES หรือ NO,1 หรือ 0 ค่าของตัวแปร boolean สามารถเป็นได้ทั้ง TRUE หรือ FALSE   2 คีย์เวิร์ดที่ตัวพิมพ์ไม่มีผล

<?php

$bln1 = tREu;
$bln2 = TrUE;
$bln3 = fAlsE;
$bln4 = FaLSe;
?>

Array

array เป็นวิธีความสามารถสูงในการจัดกลุ่มข้อมูลด้วยวิธียืดหยุ่นในการเข้าถึง การใช้ array สามารถใช้เป็นตัวเลขอย่างง่าย หรือการจับคู่อย่างยืดหยุ่นด้วยการเข้าถึงค่าผ่าน คีย์ประเภทหลังเรียกว่า  associative array
การประกาศ array ใช้เมธอด array เพื่อการสร้างค่าเริ่มต้นและส่งอ๊อบเจค array ที่เก็บค่าเหล่านี้

<?php

$peripheral = array(“Laser Print”, “Inkjet”, “Modem”, “CD-ROM”);
$prime = array(1, 2, 3, 5, 7, 11, 13, 17);
$mixed = array(234.22, “คอมพิวเตอร์”, 45, array(4, 6, 8), TRUE);
?>

ตามค่าเริ่มต้น ค่าภายใน array ได้รับการกำหนดเป็นดัชนีที่เริ่มต้นจาก 0 ในการเพิ่มหน่วยข้อมูลใหม่ด้วยไวยากรณ์นี้

<?php

$peripheral[ ] = “LAN Card”;             // หน่วยข้อมูลเพิ่มใหม่ที่ดัชนี 4
$peripheral[ ] = “VGA Card”;             // หน่วยข้อมูลเพิ่มใหม่ที่ดัชนี 5
?>

รวมทั้งสามารถระบุดัชนีของรายการเพิ่มใหม่ ถ้าใหญ่กว่าดัชนีสุดท้ายใน array จะมีช่องว่างลำดับตัวเลข

<?php
$peripheral[45] = “CD Writer”;
?>

การเข้าถึงหน่วยข้อมูลใน array สามารถทำโดยการให้ตัวเลขดัชนีในวงเล็บสี่เหลี่ยม

<?php
echo $peripheral[2];             // พิมพ์ผล Modem
?>

การระบุค่าด้วยข้อความแทนที่ตัวเลขเริ่มต้น การกำหนดระบุคู่ คีย์-ค่า ด้วย => operator เมื่อสร้าง array

<?php

$developer = array(“software” => “PHP”, “website” => “www.php.net”,
“database” => “MySQL”, “decription” => “Web Developer”);
echo $developer[“website”]               // พิมพ์ผล http://www.php.net
?>

array เป็นเครื่องมือที่สำคัญใน PHP ดูเพิ่มเติมได้ในบทที่ 4 “การทำงานกับ Array”

Object

เมื่อ PHP สนับบสนุน object-oriented programming ในเวอร์ชันนี้มีการปรับปรุงและบางสิ่งอาจจะมากกว่าภาษาอื่น โดยย่อ object-oriented programming คือการใช้ประเภทข้อมูลใหม่ (เรียกว่า “object” หรือ “class”) ดังนั้นแทนที่การใช้ชุดของฟังก์ชัน แต่สามารถใช้เมธอดและตัวแปรกับข้อมูลโดยตรง ดูเพิ่มเติมบทที่ 7 “Object Oriented Programming”

การเข้าถึงตัวแปรหรือเมธอดบนอ๊อบเจค ใช้ -> operator ใน PHP ถ้ามี Rectangular class อ่านค่าความกว้าง (width) ความยาว (length) และเมธอดคำนวณพื้นที่ คำสั่งสามารถเขียนได้ดังนี้

<?php

$shape = new Rectangular ();
$shape->width = 20;
$shape->length = 30;
echo “พื้นที่สี่เหลี่ยม คือ: “.$shape->calculateArea();

?>

Variable Expansion

ตามที่ได้กล่าวถึงข้อความ double quoted และ heredoc ใน PHP สามารถเก็บการอ้างอิงตัวแปรด้วยเครื่องหมาย  $ และ engine จะทราบว่าต้องทำอะไร

Variable Expansion ใน PHP เป็นส่วนการทำงานความสามารถสูงที่ให้ด้านความเร็วและการผสมเนื้อหากับโปรแกรม มี 2 วิธีในการใช้ส่วนการทำงานนี้คือ แบบง่ายและแบบซับซ้อน แบบแรกสำหรับการตัวแปร ค่า array หรือคุณสมบัติอ๊อบเจค ขณะที่แบบหลังสำหรับส่วนขยายแม่นยำมากกว่า
ตัวอย่างแบบง่าย

<?php

$type = “simple”;
echo “นี่เป็นตัวอย่างของส่วนขยาย ‘$type’ “;
$type = array(“แบบง่าย”, “แบบซับซ้อน”);

echo<<<THE_END
เช่นกัน นี่เป็นตัวอย่างของส่วนขยาย array ‘$type[0]’

THE_END;

?>

เมื่อ PHP processor เห็น $ ในข้อความ double quoted หรือ heredoc จะอ่านตัวอักษรทั้งหมดจนสิ้นสุดชื่อตัวแปร, ดัชนีของ array หรือคุณสมบัติอ๊อบเจค จากนั้นจะประเมินผลลัพธ์และวางค่าในข้อความผลลัพธ์

ตามตัวอย่าง ถ้าไม่ใส่ single quoted (‘) ล้อมตัวแปร $type ไว้ PHP จะแสดงผลลัพธ์เป็นความผิดพลาด

การแก้ปัญหานี้สามารถใช้ส่วนขยายตัวแปรแบบซับซ้อน การใช้ให้หุ้มส่วนขยายด้วยวงเล็บปีก { } ในคำสั่ง PHP processor มองหาวงเล็บปีกกาทันทีต่อจาก $ ที่ระบุแหล่งส่วนขยายตัวแปร กรณีอื่นแสดงผลวงเล็บปีกและสิ่งที่ติดตามมา

<?php

$hour = 16;
$kilometres = 4;
$content = “ลูกอม”;

echo ”   4pm ในเวลา 24 ชั่วโมง คือ  {$hour}00 นาฬิกา<br/>\n”;

echo <<<MSG
ระยะทาง {$kilometres}000 เมตร เท่ากับ {$kilometres} กม.<br/>
กระปุกอยู่ที่นี่ และเต็มไปด้วย${content}<br/>

MSG;

?>

ถ้าต้องการมีตัวอักษร {$ ในผลลัพธ์ จะต้อง escape เป็น {\$

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

โครงสร้างควบคุมคือ โครงสร้างภายในภาษาคอมพิวเตอร์ที่ใช้ควบคุมการไหล เมื่อทำการประมวลผลบนโปรแกรมหรือสคริปต์  โดยสามารถจัดกลุ่มเป็นโครงสร้างเงื่อนไข  (เช่น 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 จากการประมวลผลสคริปต์ส่วนที่เหลือ

Leave a comment