วันพฤหัสบดีที่ 27 พฤศจิกายน พ.ศ. 2557

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

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

การทำงานกับประเภทข้อมูลของ 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ตัวเลขฐานแปดตัวอักษรที่แสดงโดยค่าในช่วง 0-255 ด้วยการระบุเป็นเลขฐานแปด
\xตัวเลขฐานสิบตัวอักษรที่แสดงโดยค่าในช่วง 0-255 ด้วยการระบุเป็นเลขฐานสิบ
PHP ไม่สนับสนุนตัวอักษร escape อื่น และถ้าไม่ตรงกับชุดตัวอักษรตามตาราง 1.1 จะพิมพ์ backslash และตัวอักษรนั้น
<?php
echo "ข้อความ double quote ";
echo "<br/>";
echo "แสดงผล double quote \" - \" ";
echo "<br/>";
echo "แสดงผล double quote \042 - \042 ";
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"]               // พิมพ์ผล 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 เป็น {\$

ไม่มีความคิดเห็น:

แสดงความคิดเห็น