PHP書いていて、整数キャストした時にちゃんとバグなく動くのか気になったのでちょっと調べてみた。 やっぱ結構緩そうなので、これをどういう型変換にするのがいいか今後検討していきたい。
input
<?php function to_int($v) { return (int)$v; } var_dump(to_int(NULL)); var_dump(to_int(0)); var_dump(to_int(1)); var_dump(to_int('')); var_dump(to_int('0')); var_dump(to_int('1')); var_dump(to_int('a')); var_dump(to_int(true)); var_dump(to_int(false)); var_dump(to_int(0.1)); var_dump(to_int([])); var_dump(to_int(['a'])); var_dump(to_int(['a', 'b'])); var_dump(to_int([1, 2])); var_dump(to_int(new stdClass())); var_dump(to_int(new stdClass(['a' => 'a']))); var_dump(to_int(function () {return true;}));
output
$ php integer.php int(0) int(0) int(1) int(0) int(0) int(1) int(0) int(1) int(0) int(0) int(0) int(1) int(1) int(1) Warning: Object of class stdClass could not be converted to int in /Users/anderiens/Dev/php-experiments/integer.php on line 5 int(1) Warning: Object of class stdClass could not be converted to int in /Users/anderiens/Dev/php-experiments/integer.php on line 5 int(1) Warning: Object of class Closure could not be converted to int in /Users/anderiens/Dev/php-experiments/integer.php on line 5 int(1)
TODO あとで他の言語も調べる。