intval() 是 PHP 內建的類型轉換函數,用於將混合型別的變數轉換為整數。它支援指定進制(基數),預設為十進制。函數簽名如下:
int intval ( mixed $var [, int $base = 10 ] )
成功時回傳轉換後的整數;失敗時回傳 0。空陣列與物件回傳 0,非空陣列與物件回傳 1。整數最大值取決於系統位元數:
超出範圍的數值會被截斷為最大值。字串轉換遵循「從最左側開始解析數字」的規則,非數字開頭的字串通常回傳 0。
<?php
echo intval(42); // 42
echo intval(4.2); // 4
echo intval('42'); // 42
echo intval('+42'); // 42
echo intval('-42'); // -42
echo intval(042); // 34 (八進位 42 = 十進位 34)
echo intval('042'); // 42 (字串預設十進位)
echo intval(1e10); // 1410065408 (浮點數溢位)
echo intval('1e10'); // 1 (字串解析到 '1' 為止)
echo intval(0x1A); // 26 (十六進位)
echo intval(420000000000000000000); // 0 (超出 32 位元範圍)
echo intval('420000000000000000000'); // 2147483647 (截斷為最大值)
echo intval(42, 8); // 42 (十進位 42 視為八進位輸入)
echo intval('42', 8); // 34 (字串 '42' 以八進位解析)
?>
在處理使用者輸入(如 $_GET['id'])時,常搭配 intval() 做基本防禦:
$id = intval($_GET['id']);
但需注意:intval() 無法防禦 SQL 注入,資料庫操作仍應使用預處理語句。