% php -r '$nums = array(2147483647, 2147483648, 2147483649, -2147483647, -2147483648, -2147483649);
var_dump($nums, array_map("intval", $nums));'
array(6) {
[0]=>int(2147483647)
[1]=>float(2147483648)
[2]=>float(2147483649)
[3]=>int(-2147483647)
[4]=>float(-2147483648)
[5]=>float(-2147483649)
}
array(6) {
[0]=>int(2147483647)
[1]=>int(-2147483648)
[2]=>int(-2147483647)
[3]=>int(-2147483647)
[4]=>int(-2147483648)
[5]=>int(-2147483648)
}何でこんな仕様なのか、分からないではないけどやっぱりキモい... float(2147483648) が int(-2147483648) にキャストされることなんか知っておかないと絶対ハマる。
PHP にも組み込み型として任意精度実数 (numeric) 型と複素数 (complex) 型がほしいなあ。
あと基本型のタイプヒンティング。