【发布时间】:2012-05-12 07:44:37
【问题描述】:
鉴于此声明:
(string)$my_string = 'Hello world';
*vs*
$my_string = 'Hello world';
或*
(int)$my_int = 1;
$my_int = 1;
与第一种在PHP中定义字符串变量的方式相比有优势吗?
【问题讨论】:
-
我不确定它在这种情况下是否有任何影响。如果你想存储类型转换的值,我希望
$my_string = (string) 'Hello world';,但是我的 PHP 有点生疏,所以不要听我的。 -
@FelixKling 我写出的语法实际上已编译。我还没有检查它是否适用于你的语法。
-
我不怀疑它可以编译,但我一直认为
(foo) bar返回 的东西。就像条件运算符一样。有些人将其用于副作用并写foo ? bar : baz;并忽略返回值。在那种情况下,它根本不会更好(不是说我的版本很好,为什么要将字符串转换为字符串?;))。也许这就是重点:如果您知道值的类型,则不必强制转换它。你为什么要?它已经有这种类型。我可以在斑马上画黑白条纹,但这有意义吗(如果它不是白化病)? -
是的,我同意。我只是在考虑这个,因为我刚刚完成了一个 C++ 类,它比 PHP 更精确。我想尝试让我的 PHP 代码尽可能高效。
-
啊...静态类型语言 vs 动态类型语言 :) 即使使用类型转换,您也不会将任何信息添加到 变量。无论哪种类型,该变量都将保存任何值。类型转换仅用于将 value 的类型转换为另一种类型。