3v4l.org

run code in 500+ PHP versions simultaneously
<?php echo CASE_LOWER, PHP_EOL; echo CASE_UPPER, PHP_EOL; $arr = ['a' => 1]; echo '===== THESE ARE VALID AND CORRECT =====', PHP_EOL; echo '------ $case is PHP constant -------------', PHP_EOL; var_dump(array_change_key_case($arr, CASE_LOWER)); var_dump(array_change_key_case($arr, CASE_UPPER)); echo '------ $case is integer -------------', PHP_EOL; var_dump(array_change_key_case($arr, 0)); var_dump(array_change_key_case($arr, 1)); echo '===== THE BEHAVIOUR HERE IS UNEXPECTED, I WOULD EXPECT A TYPEERROR =====', PHP_EOL; echo '------- $case is text string ------------', PHP_EOL; var_dump(array_change_key_case($arr, '0')); var_dump(array_change_key_case($arr, '1')); echo '------ $case is float -------------', PHP_EOL; var_dump(array_change_key_case($arr, 0.3)); var_dump(array_change_key_case($arr, 1.4)); echo '------ $case is boolean -------------', PHP_EOL; var_dump(array_change_key_case($arr, false)); var_dump(array_change_key_case($arr, true)); echo '===== WHEN ERRORS ARE ACTUALLY THROWN =====', PHP_EOL; echo '------ $case is invalid value -------------', PHP_EOL; try { var_dump(array_change_key_case($arr, 3)); } catch(Error $e) { echo $e->getMessage(), PHP_EOL; } echo '------ $case is invalid value and invalid type -------------', PHP_EOL; try { var_dump(array_change_key_case($arr, 'text')); } catch(Error $e) { echo $e->getMessage(), PHP_EOL; }
Output for 8.2.31 - 8.2.33, 8.3.0 - 8.3.33, 8.4.1 - 8.4.25, 8.5.0 - 8.5.10
0 1 ===== THESE ARE VALID AND CORRECT ===== ------ $case is PHP constant ------------- array(1) { ["a"]=> int(1) } array(1) { ["A"]=> int(1) } ------ $case is integer ------------- array(1) { ["a"]=> int(1) } array(1) { ["A"]=> int(1) } ===== THE BEHAVIOUR HERE IS UNEXPECTED, I WOULD EXPECT A TYPEERROR ===== ------- $case is text string ------------ array(1) { ["a"]=> int(1) } array(1) { ["A"]=> int(1) } ------ $case is float ------------- Deprecated: Implicit conversion from float 0.3 to int loses precision in /in/k8YmZ on line 29 array(1) { ["a"]=> int(1) } Deprecated: Implicit conversion from float 1.4 to int loses precision in /in/k8YmZ on line 30 array(1) { ["A"]=> int(1) } ------ $case is boolean ------------- array(1) { ["a"]=> int(1) } array(1) { ["A"]=> int(1) } ===== WHEN ERRORS ARE ACTUALLY THROWN ===== ------ $case is invalid value ------------- array(1) { ["A"]=> int(1) } ------ $case is invalid value and invalid type ------------- array_change_key_case(): Argument #2 ($case) must be of type int, string given

preferences:
58.13 ms | 878 KiB | 4 Q