3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php //Hi, this is actually possible already in PHP already, and doesn't need any extra functionality. // You can specify a function to be called to combine multiple arguments into a single // value inside case statements like this: function f($value, $access = null) { $knownAccessTypes = [ 'read-only', 'read-write' ]; if (in_array($access, $knownAccessTypes)) { return $value.$access; } return $value; } function multiSwitchFunction($value, $access = null) { switch (f($value, $access)) { case f('a', 'read-only'): return 'a r'; case f('a', 'read-write'): return 'a w'; case f('a'): return 'a default'; case f('b', 'read-only'): return 'b r'; case f('b', 'read-write'): return 'b w '; case f('c', 'read-only'): return 'c r'; case f('c', 'read-write'): return 'c w'; case f('d', 'read-only'): return 'd r'; case f('d', 'read-write'): return 'd w' ; default: return "unknown"; } } var_dump(multiSwitchFunction('a', 'read-write')); var_dump(multiSwitchFunction('a', 'foobar')); var_dump(multiSwitchFunction('d', 'read-write')); var_dump(multiSwitchFunction('d', 'foobar'));
Output for 5.4.0 - 7.3.1
string(3) "a w" string(9) "a default" string(3) "d w" string(7) "unknown"
Output for 4.4.2 - 4.4.9, 5.1.0 - 5.3.29
Parse error: syntax error, unexpected '[' in /in/sk5l3 on line 11
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1, 5.0.0 - 5.0.5
Parse error: parse error, unexpected '[' in /in/sk5l3 on line 11
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/sk5l3 on line 11
Process exited with code 255.