ความหมายและการใช้งาน
PHP เป็นที่รู้จักในฐานะภาษาที่พิมพ์แบบไดนามิก การประกาศประเภทตัวแปรที่ชัดเจนนั้นไม่จำเป็นและไม่รองรับใน PHP ตรงกันข้ามกับ C, C++ และ Java ประเภทของตัวแปร PHP จะถูกกำหนดโดยค่าที่กำหนด ไม่ใช่วิธีอื่น นอกจากนี้ ตัวแปรเมื่อกำหนดค่าประเภทต่าง ๆ ประเภทของตัวแปรก็เปลี่ยนแปลงเช่นกัน แนวทางของ PHP เพื่อจัดการกับค่าที่เปลี่ยนแปลงแบบไดนามิกของตัวแปรนี้เรียกว่าการเล่นกลประเภท
$var="Hello"; // variable is string type $var=100; //same variable now becomes int
การเล่นกลประเภทยังเกิดขึ้นระหว่างการคำนวณนิพจน์ ในตัวอย่างนี้ ตัวแปรสตริงที่มีตัวเลขจะถูกแปลงเป็นจำนวนเต็มโดยอัตโนมัติสำหรับการประเมินนิพจน์การบวก
ตัวอย่าง
<?php $var1=100; $var2="100"; $var3=$var1+$var2; var_dump($var3); ?>
ผลลัพธ์
สิ่งนี้จะทำให้เกิดผลลัพธ์ดังต่อไปนี้ -
int(200)
หากสตริงเริ่มต้นด้วยตัวเลข อักขระที่ไม่ใช่ตัวเลขต่อท้าย หากมี จะถูกละเว้นขณะทำการคำนวณ อย่างไรก็ตาม PHP parser จะออกประกาศดังที่แสดงด้านล่าง
ตัวอย่าง
<?php $var1=100; $var2="100 days"; $var3=$var1+var2; var_dump($var3); ?>
ผลลัพธ์
สิ่งนี้จะทำให้เกิดผลลัพธ์ดังต่อไปนี้ -
PHP Notice: A non well formed numeric value encountered in ... int(200)
การหล่อแบบบังคับให้ตัวแปรถูกใช้เป็นบางประเภท สคริปต์ต่อไปนี้แสดงตัวอย่างตัวดำเนินการแคสต์ประเภทต่างๆ
ตัวอย่าง
<?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"