นิยามและการใช้งาน
PHP เป็นภาษาที่มีการกำหนดชนิดข้อมูลแบบไดนามิก (dynamically typed) การประกาศชนิดข้อมูลของตัวแปรโดยตรงไม่ได้รับการรองรับ และไม่จำเป็นใน PHP ตรงข้ามกับ C, C++ และ Java ชนิดของตัวแปร PHP ถูกกำหนดโดยค่าที่มอบหมายให้ ไม่ใช่ในทางกลับกัน อีกทั้ง เมื่อมอบหมายค่าชนิดต่างให้ตัวแปรเดิม ชนิดของมันก็จะเปลี่ยนไปด้วย วิธีการนี้ของ PHP ในการจัดการค่าที่เปลี่ยนแปลงได้ของตัวแปร เรียกว่า Type Juggling (การจัดการชนิดข้อมูลอัตโนมัติ)
$var="Hello"; // ตัวแปรเป็นชนิดสตริง $var=100; //ตัวแปรเดียวกันกลายเป็น int
Type Juggling ยังเกิดขึ้นระหว่างการคำนวณนิพจน์ ในตัวอย่างนี้ ตัวแปรสตริงที่มีตัวเลขจะถูกแปลงเป็นจำนวนเต็มโดยอัตโนมัติสำหรับการประเมินนิพจน์บวก
ตัวอย่าง
<?php $var1=100; $var2="100"; $var3=$var1+$var2; var_dump($var3); ?>
ผลลัพธ์
int(200)
ถ้าสตริงขึ้นต้นด้วยตัวเลข ตัวอักษรที่ไม่ใช่ตัวเลขต่อท้ายจะถูกละเว้นขณะคำนวณ แต่ PHP parser จะแจ้งเตือน (notice) ดังนี้:
ตัวอย่าง
<?php $var1=100; $var2="100 days"; $var3=$var1+var2; var_dump($var3); ?>
ผลลัพธ์
PHP Notice: A non well formed numeric value encountered in ... int(200)
การแปลงชนิด (Type casting) บังคับให้ตัวแปรถูกใช้เป็นชนิดที่กำหนด สคริปต์ต่อไปนี้แสดงตัวอย่างตัวดำเนินการแปลงชนิดต่างๆ:
ตัวอย่าง
<?php $var1=100; $var2=(boolean)$var1; $var3=(string)$var1; $var4=(array)$var1; $var5=(object)$var1; var_dump($var2, $var3, $var4, $var5); ?>
ผลลัพธ์
bool(true) string(3) "100" array(1) { [0]=> int(100) } object(stdClass)#1 (1) { ["scalar"]=> int(100) }
การแปลงตัวแปรเป็นสตริงยังสามารถทำได้โดยการล้อมรอบด้วยเครื่องหมายคำพูดคู่:
ตัวอย่าง
<?php $var1=100.50; $var2=(string)$var1; $var3="$var1"; var_dump($var2, $var3); ?>
ผลลัพธ์
string(5) "100.5" string(5) "100.5"