检查转换为int是否会丢失数据 - PHP

时间:2013-01-10 14:18:21

标签: php casting biginteger

我有这段代码:

$result = new stdClass();
foreach ($array as $index => $value) {
    if(is_numeric($value)){
        $int = (int)$value;
        $double = (double)$value;
        if($int == $double)
            $value = $int;
        else
            $value = $double;
    }
    $index = strtolower($index);
    $result->$index = $value;
}

它已经工作了很长时间。现在我遇到了问题。我的数据库中有一个列中包含数字(大数字)。但他们不是数字,而是varchar这些数字不是出于数学目的。不幸的是,由于该列仅用数字填充,它通过了is_numeric测试,但由于它是一个巨大的数字,它会因内存限制而丢失数据(我想是40亿)。 无论如何,我怎样才能检查演员在丢失数据后是否丢失了我的变量? 感谢。

2 个答案:

答案 0 :(得分:3)

if($value<=PHP_INT_MAX) ... // safe to convert
else // not safe

答案 1 :(得分:1)

将其转换回来,看它是否提供与源相同的值。