PHP类型转换

s.w*_*dit 25 php types casting

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

我们应该使用哪种变体:

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

所有这些都产生相同的结果.

xda*_*azz 26

(int)$value
Run Code Online (Sandbox Code Playgroud)

保存一个函数调用intval($value)settype($value, 'int').

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

当您需要使用intval($value)时,需要使用指定的基础进行转换(默认为基数为10).intval接受转换基数的第二个参数.


rai*_*ace 15

我更喜欢使用

settype($value,getType(intval((int)$value)));
Run Code Online (Sandbox Code Playgroud)

  • 我就像WTF DOWNVOTE ......然后我明白了.好:) (4认同)
  • 我不明白。这与 settype($value,'integer') 有何不同? (2认同)
  • LMFAO 太疯狂了 (2认同)

Igo*_*tov 6

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

  • “快得多”——请不要。正是因为这样的答案,很多人认为这是真的 (15认同)
  • 我同意它更快,但是当你的代码中有 1000 万次强制转换时 - 你会遇到比仅仅决定使用什么 - 函数或类型提示更糟糕的麻烦。因此,对于现实生活来说,差异根本不重要(对于数十万人来说,可以忽略不计) (6认同)
  • 这是真的。我已经测试了所有方法一千万次并得到以下结果: int()$value - 2.7695989608765 s; intval($value) - 5.8383219242096 秒;settype($value, 'int') - 8.035208940506 s。PHP 中的调用函数成本较高 (4认同)

Mic*_*ick 6

这里的答案是使用任何读物"清洁"给你.速度的任何差异都将是如此微小,担心它几乎肯定会花费你比你可以节省更多的时间.然而,节省时间的是拥有可以在将来阅读和理解的代码.

Coding Horror有一篇很好的文章解释了这一点.