1

我有这段代码:

$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 亿)而丢失了数据。无论如何,我如何检查演员表后我是否丢失了数据?谢谢。

4

2 回答 2

3
if($value<=PHP_INT_MAX) ... // safe to convert
else // not safe
于 2013-01-10T14:20:59.887 回答
1

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

于 2013-01-10T14:19:52.107 回答