3v4l.org

run code in 300+ PHP versions simultaneously
<?php test('()'); test('())'); test('(())'); test('))(('); test(')('); test(')(('); test('((()('); test('((()()(())))'); test('((()()(()))'); test('foo((bar)is(((baz))and)quix)'); function test($str) { echo "$str is ".(is_balanced($str)?'balanced':'not balanced')."\n"; } function is_balanced($str) { $count = 0; for($i=0;$i<strlen($str);$i++) { switch($str[$i]) { case '(': $count++; break; case ')': $count--; if($count < 0) return false; // ignore everything else } } return $count == 0; }
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.7 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
() is balanced ()) is not balanced (()) is balanced ))(( is not balanced )( is not balanced )(( is not balanced ((()( is not balanced ((()()(()))) is balanced ((()()(())) is not balanced foo((bar)is(((baz))and)quix) is balanced

preferences:
204.28 ms | 406 KiB | 313 Q