PHP書いていて、整数キャストした時にちゃんとバグなく動くのか気になったのでちょっと調べてみた。
調べた時のコードは以下。
GitHub - AnDeriens/type_researcher at v.0.1
int
value |
result |
NULL |
int(0) |
0 |
int(0) |
1 |
int(1) |
'' |
int(0) |
'0' |
int(0) |
'1' |
int(1) |
'a' |
int(0) |
true |
int(1) |
false |
int(0) |
0.1 |
int(0) |
array () |
int(0) |
array ( 0 => 'a',) |
int(1) |
array ( 0 => 'a', 1 => 'b',) |
int(1) |
array ( 0 => 1, 1 => 2,) |
int(1) |
(object) array() |
E_WARNING |
(object) array( 'a' => 'a',) |
E_WARNING |
Closure::__set_state(array()) |
E_WARNING |
string
※ FatalErrorのときは、エラーメッセージを表示しています。
value |
result |
NULL |
string(0) "" |
0 |
string(1) "0" |
1 |
string(1) "1" |
'' |
string(0) "" |
'0' |
string(1) "0" |
'1' |
string(1) "1" |
'a' |
string(1) "a" |
true |
string(1) "1" |
false |
string(0) "" |
0.1 |
string(3) "0.1" |
array () |
E_WARNING |
array ( 0 => 'a',) |
E_WARNING |
array ( 0 => 'a', 1 => 'b',) |
E_WARNING |
array ( 0 => 1, 1 => 2,) |
E_WARNING |
(object) array() |
string(70) "[Fatal Error]Object of class stdClass could not be converted to string" |
(object) array( 'a' => 'a',) |
string(70) "[Fatal Error]Object of class stdClass could not be converted to string" |
Closure::__set_state(array()) |
string(70) "[Fatal Error]Object of class Closure could not be converted to string " |
boolean
value |
result |
NULL |
bool(false) |
0 |
bool(false) |
1 |
bool(true) |
'' |
bool(false) |
'0' |
bool(false) |
'1' |
bool(true) |
'a' |
bool(true) |
true |
bool(true) |
false |
bool(false) |
0.1 |
bool(true) |
array () |
bool(false) |
array ( 0 => 'a',) |
bool(true) |
array ( 0 => 'a', 1 => 'b',) |
bool(true) |
array ( 0 => 1, 1 => 2,) |
bool(true) |
(object) array() |
bool(true) |
(object) array( 'a' => 'a',) |
bool(true) |
Closure::__set_state(array()) |
bool(true) |
float
value |
result |
NULL |
float(0) |
0 |
float(0) |
1 |
float(1) |
'' |
float(0) |
'0' |
float(0) |
'1' |
float(1) |
'a' |
float(0) |
true |
float(1) |
false |
float(0) |
0.1 |
float(0.1) |
array () |
float(0) |
array ( 0 => 'a',) |
float(1) |
array ( 0 => 'a', 1 => 'b',) |
float(1) |
array ( 0 => 1, 1 => 2,) |
float(1) |
(object) array() |
E_WARNING |
(object) array( 'a' => 'a',) |
E_WARNING |
Closure::__set_state(array()) |
E_WARNING |
array
value |
result |
NULL |
array(0) {} |
0 |
array(1) { [0]=> int(0)} |
1 |
array(1) { [0]=> int(1)} |
'' |
array(1) { [0]=> string(0) ""} |
'0' |
array(1) { [0]=> string(1) "0"} |
'1' |
array(1) { [0]=> string(1) "1"} |
'a' |
array(1) { [0]=> string(1) "a"} |
true |
array(1) { [0]=> bool(true)} |
false |
array(1) { [0]=> bool(false)} |
0.1 |
array(1) { [0]=> float(0.1)} |
array () |
array(0) {} |
array ( 0 => 'a',) |
array(1) { [0]=> string(1) "a"} |
array ( 0 => 'a', 1 => 'b',) |
array(2) { [0]=> string(1) "a" [1]=> string(1) "b"} |
array ( 0 => 1, 1 => 2,) |
array(2) { [0]=> int(1) [1]=> int(2)} |
(object) array() |
array(0) {} |
(object) array( 'a' => 'a',) |
array(1) { ["a"]=> string(1) "a"} |
Closure::__set_state(array()) |
array(1) { [0]=> object(Closure)#6 (0) { }} |
object
value |
result |
NULL |
object(stdClass)#4 (0) {} |
0 |
object(stdClass)#4 (1) { ["scalar"]=> int(0)} |
1 |
object(stdClass)#4 (1) { ["scalar"]=> int(1)} |
'' |
object(stdClass)#4 (1) { ["scalar"]=> string(0) ""} |
'0' |
object(stdClass)#4 (1) { ["scalar"]=> string(1) "0"} |
'1' |
object(stdClass)#4 (1) { ["scalar"]=> string(1) "1"} |
'a' |
object(stdClass)#4 (1) { ["scalar"]=> string(1) "a"} |
true |
object(stdClass)#4 (1) { ["scalar"]=> bool(true)} |
false |
object(stdClass)#4 (1) { ["scalar"]=> bool(false)} |
0.1 |
object(stdClass)#4 (1) { ["scalar"]=> float(0.1)} |
array () |
object(stdClass)#4 (0) {} |
array ( 0 => 'a',) |
object(stdClass)#4 (1) { ["0"]=> string(1) "a"} |
array ( 0 => 'a', 1 => 'b',) |
object(stdClass)#4 (2) { ["0"]=> string(1) "a" ["1"]=> string(1) "b"} |
array ( 0 => 1, 1 => 2,) |
object(stdClass)#4 (2) { ["0"]=> int(1) ["1"]=> int(2)} |
(object) array() |
object(stdClass)#4 (0) {} |
(object) array( 'a' => 'a',) |
object(stdClass)#4 (1) { ["a"]=> string(1) "a"} |
Closure::__set_state(array()) |
object(Closure)#6 (0) {} |