PHP define()值混淆

时间:2017-08-03 02:36:56

标签: php function

define ("num", "12");
echo num%8;

根据我在google中找到的内容,define()保持一个常量值,值为num12。所以我的困惑是echo num%8等于4时的结果?有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

如名称所示,define函数在运行时定义变量 。因此define("num", "12")只定义名为num的变量,其内容为"12"

来自manual

  

define - 定义命名常量

之后你有num % 8基本上评估为12 % 8。此时,PHP会将您的String值转换为Integer值,因为您需要运行数字%运算符。因此,请参阅echo "12" % 8,其中也会输出4

作为一个小型实验,请看一下:

define("num", "12");
echo gettype(num); // Outputs: string
echo gettype(num + 1); // Outputs: integer

因此,如果您需要,PHP会自动转换类型。

最后请注意,%模运算符。它将数字左侧除以右侧的数字,并返回余数。 因此12 / 81,其余为4。这就是它输出4的原因。