PHP เบื้องต้น > ภาษา PHP
ตัวแปรและค่าคงที่
ตัวแปรและค่าคงที่เป็นสมาชิกพื้นฐานในการทำงานของภาษาโปรแกรมทั่วไปรวมถึง PHP
การกำหนดค่าคงที่
ค่าคงที่ใช้เก็บค่า เช่น ตัวแปร แต่เมื่อตั้งค่าแล้วจะไม่สามารถเปลี่ยนแปลงได้ การกำหนดใช้ฟังก์ชัน define
define ("SHAMPOOPRICE", 50);
define ("CONDITIONERPRICE",50);
define ("SOAPPRICE", 35);
ให้สังเกตว่า ชื่อของค่าคงที่เป็นตัวพิมพ์ใหญ่ เนื่องจากเป็นแบบแผนการตั้งชื่อ ตามแบบภาษา C เพื่อแยกระหว่างตัวแปรกับค่าคงที่ แบบแผนนี้ไม่บังคับแต่ช่วยทำให้คำสั่งอ่านและบำรุงรักษาได้ง่าย
ความแตกต่างสำคัญประการหนึ่ง ระหว่างค่าคงที่กับตัวแปรคือ เมื่ออ้างอิงค่าคงที่ไม่ต้องใช้เครื่องหมายดอลลาร์นำหน้า ถ้าต้องการใช้ค่าคงที่ ให้ใช้เฉพาะชื่อ ตัวอย่าง
echo SOAPPRICE;
ประเภทข้อมูลและค่าพิเศษ
ประเภทข้อมูลและค่าพิเศษไม่สามารถจัดเข้าสู่กลุ่มประเภทข้อมูลจึงต้องแยกอธิบายต่างหาก
NULL
NULL เป็นประเภทข้อมูลและค่าพิเศษใน PHP ที่ระบุ ไม่มีค่า หรือ ค่าว่าง ตัวแปรเป็น NULL ได้
- ถ้าตั้งด้วยคีย์เวิร์ด NULL และค่านี้ชนิดตัวพิมพ์มีผล
- ถ้าไม่เคยได้รับการกำหนดค่า
- ถ้ากำหนดด้วยเมธอด unset
NULL แตกต่างจากค่าจำนวนเต็ม 0 หรือข้อความว่าง เพราะสองค่านี้ได้รับการตั้งค่า การทดสอบค่า NULL เรียกฟังก์ชัน is_null
<?php
$myvalue = Null ; |
// NULL เป็นค่าชนิดตัวพิมพ์มีผล |
echo is_null($myvalue); |
// มีค่าเป็น 1 |
?>
Resource
เมื่อ PHP ต้องการรักษาค่าบนอ๊อบเจคที่ไม่จำเป็นต้องมาจาก PHP เช่น การเชื่อมต่อฐานข้อมูลหรือจัดการ กับอ๊อบเจคของระบบปฏิบัติการ ตัวแปรพิเศษนี้เรียกว่า resource
ตามปกติ resource ส่งผ่านระหว่างฟังก์ชันที่ทำงานเช่นนี้ ได้รับการปล่อยโดย PHP engine เมื่อไม่มีความจำเป็น ถ้าใช้ฟังก์ชัน var_dump บนตัวแปร resource จะเห็นผลลัพธ์ลักษณะนี้
Resource(2) of type (mysql link)
ตัวแปร By Value และ By Reference
ตามค่าเริ่มต้น ตัวแปรและค่าคงที่ได้รับการกำหนดแบบ by value เมื่อกำหนดค่าจาก 1 ตัวแปรไปยังอีกตัว ค่าได้รับการคัดลอก สิ่งนี้ทำงานได้กับประเภทข้อมูลทั้งหมด ยกเว้นอ๊อบเจค
<?php
$a = 200; |
|
$b = $a; |
// $b มีสำเนาของค่าเป็น 200 |
$c = "hello"; |
|
$d = $c; |
// $d เก็บสำเนาของ "hello" |
$e = array(1, 2, 3); |
|
$f = $e; |
// ทั้ง $e และ $f มีค่า (1, 2, 3) |
$f[2] = 4; |
// $f มีค่า(1, 2, 4), $e ไม่มีการเปลี่ยน |
$g = SOAPPRICE; |
// $g มีค่าของค่าคงที่ SOAPPRICE (0) |
?>
การกำหนดค่าแบบ by reference เป็นการบอกตัวแปรให้กระทำเป็น "alias" ของอีกตัวแปรที่ทั้งคู่อ้างอิงถึงข้อมูลเดียวกัน การกำหนดให้เติมคำนำหน้าด้วย & operator
<?php
$a = 123; |
|
$b = &$a; |
// $b และ $a อ้างอิงถึงข้อมูลเดียวกัน |
$a = 456; |
// $b มีค่าเป็น 456 ! |
|
|
$arr = array(array(1), array(2), array(3)); |
|
$sub = &$arr[0]; |
// $sub อ้างถึง array เดียวกันเป็น $arr[0] |
$sub[0] = 100; |
// $sub[0] และ $arr[0][0] ทั้งคู่มีค่า 100 |
?>
Scope ของตัวแปร
คำว่า scope อ้างถึงพื้นที่ภายในสคริปต์ที่มองเห็นตัวแปรได้ ประเภทพื้นฐานของ scope ใน PHP คือ
- Global เป็นการประกาศตัวแปรในสคริปต์ที่มองเห็นได้ทั่วทั้งสคริปต์ แต่ไม่ใช่ภายในฟังก์ชัน
- ตัวแปรที่ใช้ภายในฟังก์ชันเป็นตัวแปรภายในฟังก์ชัน
- ตัวแปรที่ใช้ภายในฟังก์ชันแต่ประกาศเป็น global อ้างอิง เป็นตัวแปร global ของชื่อเดียวกัน
ตัวแปร Predefined
PHP มาพร้อมกับตัวแปร predefined จำนวนหนึ่งที่ให้สารสนเทศเกี่ยวกับสภาพแวดล้อมการทำงานปัจจุบัน ส่วนใหญ่เป็น global array ด้วยชื่อ คีย์อ้างอิงถึงสารสนเทศเฉพาะที่ค้นหาได้
- $GLOBAL สิ่งนี้เก็บการอ้างอิงถึงตัวแปร global ทั้งหมดภายในสคริปต์ คีย์ของ array นี้เป็นชื่อของตัวแปร
- $_SERVER สิ่งนี้เก็บสารสนเทศเกี่ยวกับบริบทในการประมวลผลสคริปต์ เช่น ชื่อแม่ข่าย ชื่อเพจที่กำลังเรียกใช้ สารสนเทศเกี่ยวกับการเชื่อมต่อ และอื่นๆ
- $_GET, $_POST สิ่งนี้เก็บตัวแปรที่เพจส่งให้แม่ข่ายเป็นส่วนของฟอร์ม HTML
- $_SESSION, $_COOKIE สิ่งนี้เก็บสารสนเทศการจัดการผู้เยี่ยมชม และสิ่งอำนวยความสะดวกจัดเก็บเป็น cookie
- $_REQUEST สิ่งนี้เก็บเนื้อหาของ $_GET, $_POST และ $_SESSION
- $_ENV สิ่งนี้เก็บตัวแปร environment สำหรับกระบวนการสำหรับ PHP engine ที่กำลังประมวลผล คีย์ของ array เป็นชื่อของตัวแปร environment
- $php_errormsg สิ่งนี้เก็บข่าวสารความผิดพลาดครั้งสุดท้ายที่สร้างโดย PHP engine ขณะที่กำลังประมวลสคริปต์ปัจจุบัน มีให้เฉพาะภายใน scope ของคำสั่งที่เกิดความผิดพลาด และถ้าตัวเลือกคอนฟิก track_errors ใน php.ini เป็น on
ทดสอบสถานะตัวแปร
PHP มีฟังก์ชันทดสอบสถานะของตัวแปรหลายฟังก์ชัน
isset () ใช้ชื่อตัวแปรเป็น อากิวเมนต์ และ ส่งออก TRUE ถ้าตัวแปรมีอยู่ กรณีอื่นเป็น FALSE
int isset (mixed var);
unset () ใช้กำจัดตัวแปร และส่งค่าออกเป็น TRUE
int unset (mixed var);
empty() ใช้ตรวจสอบว่าตัวแปรมีอยู่และเป็นค่าว่างหรือเป็นศูนย์ ส่งออกค่าเป็น TRUE หรือ FALSE ตามกรณี
int empty (mixed var);
ตัวอย่างการใช้ ฟังก์ชัน และ เขียนคำสั่งลงในสคริปต์
echo isset($shompooqty);
echo isset($nothere);
echo empty($shampooqty);
echo empty($nothere);
ตัวแปร $shampooqty จะส่งออกค่า TRUE จาก isset() ไม่ว่ามีได้รับค่าจากฟิลด์ของฟอร์มหรือไม่ ส่วน empty() ขึ้นกับการรับค่า
ตัวแปร $nothere ไม่มีอยู่จริง ดังนั้นจะส่งออกค่า FALSE จาก isset() และให้ผลลัพธ์ TRUE จาก empty() ฟังก์ชันเหล่านี้สามารถใช้สร้างความมั่นใจว่ามีการป้อนค่าให้กับฟิลด์ในฟอร์ม
|