PHP:将整数转换为int - 获取错误

时间:2013-01-10 13:43:27

标签: php casting

我知道在PHP中int和integer之间没有太多差异。我一定是错的。

我将一个整数值传递给一个只在此值上具有int的函数。像这样: -

$new->setPersonId((int)$newPersonId); // Have tried casting with (int) and intval and both

我有另一面: -

    public function setPersonId(int $value) {
        // foobar
    }

现在,当我跑步时 - 我收到消息: -

“PHP Catchable致命错误:传递给setPersonId()的参数1必须是int的实例,整数给出”

我尝试使用(int)和intval()进行调用。

有什么想法吗?

3 个答案:

答案 0 :(得分:14)

PHP中的类型提示仅适用于对象而不适用于标量,因此PHP期望您传递“int”类型的对象。

您可以使用以下方法作为解决方法

public function setPersonId($value) {
    if (!is_int($value)) {
        // Handle error
    }
}

答案 1 :(得分:-2)

要将值显式转换为整数,请使用(int)或(整数)强制转换。但是,在大多数情况下,不需要强制转换,因为如果运算符,函数或控制结构需要整数参数,则会自动转换值。也可以使用intval()函数将值转换为整数。

http://php.net/manual/en/language.types.integer.php

答案 2 :(得分:-3)

确保将PersonID属性定义为int而不是整数:

private int $personId;

而不是

private integer $personId;