intval 和强制转换为 int - '(int) X' 之间有什么特别的区别吗?

php
2022-08-30 06:10:09

intval 和 (int) 之间有什么特别的区别吗?

例:

$product_id = intval($_GET['pid']);
$product_id = (int) $_GET['pid'];

上述两行代码之间有什么特别的区别吗?


答案 1

intval()可以传递要转换的基数。 不能。(int)

int intval( mixed $var  [, int $base = 10  ] )

答案 2

关于 和 之间的区别需要注意的一点是:将已经是 s 和 s 的变量视为不需要转换,而不管基参数如何(至少从 PHP 5.3.5 开始)。这种行为并不是最明显的,正如PHP文档页面上的评论所指出的那样,并在这里无耻地重申:(int)intval()intval()intfloat

$test_int    = 12;
$test_string = "12";
$test_float  = 12.8;

echo (int) $test_int;         // 12
echo (int) $test_string;      // 12
echo (int) $test_float;       // 12

echo intval($test_int, 8);    // 12 <-- WOAH!
echo intval($test_string, 8); // 10
echo intval($test_float, 8)   // 12 <-- HUH?

推荐