我有这段代码:
$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亿)而丢失数据。无论如何,我如何检查转换后我丢失的数据或不是我的变量?谢谢。
if($value<=PHP_INT_MAX) ... // safe to convert
else // not safe
将其转换回来,看看它是否给出与源文件相同的值