Hey all, I've been bouncing this idea of fixing all comparison operations in one fell swoop, although with an opt-in declare in the spirit of strict_types.
Here's the gist: ==, < and > plus all the comparisons done inside switch statements and arrays are not very safe. === helps some, but does nothing for switches and < >. My idea is to add a strict_comparisons declaration that you can add at the beginning of a file in the same way as strict_types. The effect would be that all normal comparisons would make a type check before doing the actual comparison, and throw a TypeError exception if the types don't match. In other words: <?php declare(strict_comparisons=1); $two = "2"; if ($two > 1) { echo "This sorta works without strict_comparisons=1" . PHP_EOL; } ...would throw a TypeError exception after this change. This change would mostly go into zend_operators.c compare_function. So it would affect every comparison operation, including switch statements and things like in_array. I've implemented a prototype with a couple of test cases in https://github.com/paytrail/php-src/tree/experimental/strict_comparisons Please take a look and let me know if this would be worth a more official RFC. <https://github.com/paytrail/php-src> --vk