在PHP中使用settype而不是使用括号进行类型转换,有什么区别?

时间:2011-04-07 06:40:52

标签: php casting type-conversion

在PHP中,您可以将某些内容类型化为类似对象; (对象)或者你可以使用settype($ var,“object”) - 但我的问题是两者之间有什么区别?

哪一个更有效/更好用?目前我发现使用(对象)完成工作,但想知道为什么还有一个settype函数。

3 个答案:

答案 0 :(得分:19)

转换会更改当前上下文中处理变量的内容,settype会永久更改它。

$value = "100"; //Value is a string
echo 5 + (int)$value; //Value is treated like an integer for this line
settype($value,'int'); //Value is now an integer

基本上,settype是以下的快捷方式:

$value = (type)$value;

答案 1 :(得分:7)

settype()改变传递的实际变量,括号内的变量不会。

如果您使用settype上的$var将其更改为整数,则会永久丢失小数部分:

$var = 1.2;
settype($var, "integer");
echo $var; // prints 1, because $var is now an integer, not a float

如果您只是进行演员表,原始变量将保持不变。

$var = 1.2;
$var2 = (integer) $var;
echo $var; // prints 1.2, because $var didn't change type and is still a float
echo $var2; // prints 1

答案 2 :(得分:0)

值得一提的是,settype不会永久更改变量类型。下次设置变量的值时,PHP也会更改其类型。

$value = "100"; //Value is a string
echo 5 + (int)$value; //Value is treated like an integer for this line
settype($value,'int'); //Value is now an integer
$value = "Hello World"; //Now value is a string
$value = 7; // Now value is an integer

类型变戏法可能令人沮丧,但是如果您了解正在发生的事情并知道您的选择可以进行管理。使用var_dump获取变量类型和其他有用的信息。