【发布时间】:2012-08-05 02:56:13
【问题描述】:
我想知道将值从一种类型转换为另一种类型的最佳方法是什么。
我们应该使用哪种变体:
intval($value);settype($value, 'int')(int)$value
它们都产生相同的结果。
【问题讨论】:
我想知道将值从一种类型转换为另一种类型的最佳方法是什么。
我们应该使用哪种变体:
intval($value);settype($value, 'int')(int)$value它们都产生相同的结果。
【问题讨论】:
(int)$value
与intval($value) 和settype($value, 'int') 相比,保存一个函数调用。
而且(int)$value足够干净,所以我更喜欢这种方式。
当您需要使用intval($value) 时,您需要使用指定的基数进行转换(默认为基数10)。 intval 接受第二个参数作为转换的基数。
【讨论】:
settype 函数会更改变量的类型。这样做可能会丢失部分数据。另一方面,诸如(int) $variable 之类的类型转换会导致变量的值被视为给定类型并且根本不影响变量,您的变量仍然保持其原始类型。
我更喜欢使用
settype($value,getType(intval((int)$value)));
【讨论】:
这里的答案是使用对您来说“更清洁”的任何内容。速度上的任何差异都将是如此之小,以至于担心它几乎肯定会花费您更多的时间而不是您可能节省的时间。然而,节省时间的方法是拥有可以在未来阅读和理解的代码。
Coding Horror 有一篇很好的文章解释了这件事。
【讨论】:
(int)$value 比其他方式快得多
【讨论】:
这取决于您要转换的类型。 PHP 已经设计为动态转换类型。如果需要,它可以将字符串 '5' 转换为整数值 5 或浮点 5.0。这只是 PHP 的自然类型转换,但有一些方法可以强制执行类似的行为。
在许多情况下,intval() 实际上比 (int) 类型转换更快,尤其是在字符串到整数的转换中。但就个人而言,由于我也编写 C++,所以我使用类型转换,因为它对我来说更自然和整洁。然而,结果在不同情况下略有不同。不过,我从没想过 settype() 很有前途。
【讨论】:
PHP 中的类型转换与在 C 中的工作方式非常相似:所需类型的名称写在要转换的变量之前的括号中。
http://php.net/manual/en/language.types.type-juggling.php#language.types.typecasting
【讨论】: