is_intとis_mumericの間の関数が欲しい
is_intはint型チェック、is_mumericは数値っぽいものをチェック。
string型でもintっぽいかどうかチェックしたい。
<?php function range_int($val) { return (is_numeric($val) && (string)$val === (string)(int)$val); } $arr = array( "123", "0", "-1", 0123, 2147483647, 2147483648, 0, 11, 9011, 00, 0x12, true, " ", "", 1.1, "123.1", "00", "0x123", "123a", "ada", "--1", "999999999999999999999999999999999", false, null, '1 ' ); foreach ($arr as $val) { print range_int($val)? 'T': 'F'; print ' '; if ($val === null) { print 'null'; } elseif ($val === true) { print 'true'; } elseif ($val === false) { print 'false'; } elseif (is_string($val)) { print '"' . $val . '"'; } else { print $val; } print "\n"; }
T "123" T "0" T "-1" T 83 T 2147483647 F 2147483648 T 0 T 11 T 9011 T 0 T 18 F true F " " F "" F 1.1 F "123.1" F "00" F "0x123" F "123a" F "ada" F "--1" F "999999999999999999999999999999999" F false F null F "1 " F ".1"
is_numeric
T "123" T "0" T "-1" T 83 T 2147483647 T 2147483648 T 0 T 11 T 9011 T 0 T 18 F true F " " F "" T 1.1 T "123.1" T "00" T "0x123" F "123a" F "ada" F "--1" T "999999999999999999999999999999999" F false F null F "1 " T ".1"
is_int
F "123" F "0" F "-1" T 83 T 2147483647 F 2147483648 T 0 T 11 T 9011 T 0 T 18 F true F " " F "" F 1.1 F "123.1" F "00" F "0x123" F "123a" F "ada" F "--1" F "999999999999999999999999999999999" F false F null F "1 " F ".1"