define ("num", "12");
echo num%8;
根据我在google中找到的内容,define()保持一个常量值,值为num
和12
。所以我的困惑是echo num%8
等于4
时的结果?有人可以解释一下吗?
答案 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 / 8
为1
,其余为4
。这就是它输出4
的原因。