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 に答える