【问题标题】:Why and when should you typecast variables in PHP为什么以及何时应该在 PHP 中对变量进行类型转换
【发布时间】: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 的类型转换为另一种类型。

标签: php casting


【解决方案1】:

比第一种方式有优势吗

是的。第二个更简洁。

PHP中类型转换变量有什么好处

将其转换为预期的类型。
不过,您很少需要使用字符串。
并且使用变量定义,您根本不需要它。

【讨论】:

    【解决方案2】:

    您的“类型转换”代码实际上并没有完成任何事情。

    (type) $var = literal 这样做:

    1. 使用文字值的本机类型将文字值分配给$var
    2. “返回”(作为表达式)将$var 的值转换为所需的类型。

    $var 的类型保持不变。

    例如:

    var_dump((string) $s = 1);
    var_dump($s);
    

    输出是:

    string(1) "1"
    int(1)
    

    所以这个语法没有意义。使用文字进行类型转换几乎可以肯定是毫无意义的。

    但是,强制变量为特定类型可能很有用,例如:$intvar = (int) $var;

    【讨论】:

      猜你喜欢
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多