我目前正在使用小代码练习PHP7。我正在使用此代码来练习标量类型声明:
declare(strict_types=1);
function div(float $x, float $y)
{
return $x / $y;
}
function sub(int $x, int $y)
{
return $x - $y;
}
var_dump(div(2, 3.5)); // float(7)
var_dump(sub('2', 3)); // Fatal error: Uncaught TypeError: Argument 1 passed to sub() must be of the type integer, string given..
但是当我运行此代码时,我的服务器会出现500错误。但是当我删除declare()时它会起作用。我的服务器正在运行PHP7。
答案 0 :(得分:0)
使用declare(strict_types = 1);你告诉php不要使用强制类型提示,所以你的字符串不会被转换为整数。 这就是你得到TypeError的原因。 如果你删除declare(strict_types = 1)php使用强制类型提示,那么你的字符串将被转换为一个整数,php不会抛出TypeError。