【问题标题】:Is there any particular difference between strval and casting to string like (string) $varstrval 和强制转换为 (string) $var 之类的字符串之间有什么特别的区别吗
【发布时间】:2015-05-08 11:58:33
【问题描述】:

这两种方法似乎没有区别,因为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 将字符串作为例外返回。

你怎么看?

【问题讨论】:

标签: php string types casting


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2023-03-27
    • 2011-07-19
    • 2015-09-06
    相关资源
    最近更新 更多