34

我想知道将值从一种类型转换为另一种类型的最佳方法是什么。

我们应该使用哪种变体:

  1. intval($value);
  2. settype($value, 'int')
  3. (int)$value

它们都产生相同的结果。

4

6 回答 6

31
(int)$value

intval($value)与和相比,保存一个函数调用settype($value, 'int')

而且(int)$value足够干净,所以我更喜欢这种方式。

当你需要使用intval($value)是指当你需要使用指定的基数进行转换时(默认是基数10)。intval接受第二个参数作为转换的基数。

于 2012-08-08T03:07:59.027 回答
17

我更喜欢使用

settype($value,getType(intval((int)$value)));
于 2012-08-08T03:48:44.500 回答
6

这里的答案是使用对您来说“更清洁”的任何内容。速度上的任何差异都将如此之小,以至于担心它几乎肯定会花费您更多的时间而不是您可能节省的时间。然而,可以节省时间的是拥有将来可以阅读和理解的代码。

Coding Horror上有一篇很棒的文章解释了这件事。

于 2012-08-08T03:22:57.480 回答
5

(int)$value比其他方式快得多

于 2012-08-08T03:12:30.037 回答
2

这取决于您要转换的类型。PHP 已经设计为动态转换类型。如果需要,它可以将字符串 '5' 转换为整数值 5 或浮点 5.0。这只是 PHP 的自然类型转换,但有一些方法可以强制执行类似的行为。

在许多情况下,intval() 实际上可以比 (int) 类型转换更快,尤其是在字符串到整数的转换中。但就个人而言,由于我也编写 C++,所以我使用类型转换,因为它对我来说更自然和整洁。然而,结果在不同情况下略有不同。不过,我从没想过 settype() 很有前途。

于 2012-08-08T03:15:05.990 回答
0

PHP 中的类型转换与 C 中的工作方式非常相似:所需类型的名称写在要转换的变量之前的括号中。

http://php.net/manual/en/language.types.type-juggling.php#language.types.typecasting

于 2015-06-01T12:09:59.473 回答