GORAGOD.com

ความแตกต่างระหว่าง (int) และ intval()

ทั้ง (int) และ intval() ใช้สำหรับการแปลงตัวอักษรเป็นตัวเลขเหมือนๆกัน แต่ทั้งสองวิธีมีข้อแตกต่างกันเล็กน้อย ซึ่งตามคู่มือของ PHP ระบุว่า
  • intval() เป็นฟังก์ชั่นแปลงค่าตัวแปรเป็น integer ซึ่งรองรับการแปลงเลขฐานต่างๆ เช่น ฐานแปด ฐานสิบ (ค่าเริ่มต้นคือฐานสิบ)
  • (int) เป็น type cast ทำหน้าที่ในการแปลงค่าของตัวแปรเท่านั้น
ข้อแตกต่างของทั้งสองฟังก์ชั่นอีกเรื่องหนึ่งคือความเร็วครับ โดยที่ (int) จะเร็วกว่า intval() อยู่เล็กน้อย

ทิป ในกรณ๊ที่ต้องการทดสอบว่าตัวแปรมีค่าเป็นศูนย์หรือไม่ ผมแนะนำให้ทดสอบด้วย empty() ก่อน แล้วค่อยแปลงเป็น integer ทีหลัง เนื่องจากฟังก์ชั่น empty() มีความเร็วในการทดสอบว่าตัวแปรมีค่าเป็น 0 หรือไม่เร็วกว่าการใช้ (int) อยู่หลายเท่าตัวทีเดียว
if ($empty($y)) {
    // do some thing
} else {
    $y = (int)$y;
    // do some thing

}

วิธีด้านบนเร็วกว่าวิธีด้านล่าง โดยเฉพาะหาก $y = 0
$y = (int)$y;
if ($y == 0) {
    // do some thing
} else {
    // do some thing
}