Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

การจัดการชนิดข้อมูลอัตโนมัติ (Type Juggling) ใน PHP

นิยามและการใช้งาน

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"