strval和cast之间是否有任何特别的区别,如字符串(字符串)$ var

时间:2015-05-08 11:58:33

标签: php string types casting

似乎两种方法之间没有区别,因为var_dump使用两种方法返回相同的结果。

简单示例:

// integer 
$var = 3;

方法和输出:

var_dump($var);         // ouput: int(3)
var_dump((string) $var);  // string(1) "3"
var_dump(strval($var));  // string(1) "3" 

如您所见,案例2和3返回一个字符串作为例外。

您怎么看?

1 个答案:

答案 0 :(得分:3)

最大的区别在于函数(任何函数)会产生一些开销。这个数字可以忽略不计,因此,在大多数情况下,这种讨论比其他任何事情更具学术性。 Gerton的链接证明它的速度较慢,但​​你不太可能注意到正常执行中的差距,因为他运行了 100万次的功能以获得 0.7s的差距(并且他使用PHP 5.2,而PHP 7可能会使这个差距更小)。 Consider this article on function execution time

  

第二个提示是PHP很快,相信我。对于你要求它做的事情,它完成工作的方式以及它代表你的工具:它快速,高效,可靠。优化PHP脚本没有那么多空间,至少不像使用像C这样的低级语言。主要技巧是优化重复的内容:循环。如果您使用分析器向您显示脚本的热路径,您会发现它很可能位于循环中。当我们作为贡献者优化PHP本身时,情况也是如此:我们不会费心优化一些用户会触发的代码部分,而是更好地优化热路径:变量访问,引擎函数调用等等...因为在这里,非常小的微秒数将转化为最终的毫秒甚至秒,因为这样的代码运行了很多次(通常涉及循环)。除了foreach()之外,在PHP中,循环是相同的并且导致相同的OPCode。将PHP的while循环转换为for循环既无用又愚蠢。再一次:分析会告诉你。