首页 > 解决方案 > PHP不会自动转换?

问题描述

我正在调用一个需要整数参数的函数。我从 http 请求中获取这个整数,所以它最初是一个字符串(即。"2" not 2)。我基于整数转换文档的理解是,如果可能,如果需要,仅包含像这样的整数的字符串会自动转换为 int。在这种特殊情况下,我遇到了given non integer错误。我已经确认进行显式(int)转换确实可以按预期工作。

php中的自动转换是如何工作的?为什么,一般来说,会出现这样的情况,它不会自动投射一些会变得有效的东西?

标签: php

解决方案


使用严格类型时,函数调用中没有自动转换。当你有:

public function test(int $var) {
 //....
}

你不能传递任何类型,但整数。

$variable = "2";
test($variable) // not allowed
test((int) $variable) //allowed

推荐阅读