make switch use === comparison not == comparison In PHP

Solution 1:

Sorry, you cannot use a === comparison in a switch statement, since according to the switch() documentation:

Note that switch/case does loose comparison.

This means you'll have to come up with a workaround. From the loose comparisons table, you could make use of the fact that NULL == "0" is false by type casting:

<?php
$var = 0;
switch((string)$var) 
{
    case "" : echo 'a'; break; // This tests for NULL or empty string   
    default : echo 'b'; break; // Everything else, including zero
}
// Output: 'b'
?>

Live Demo

Solution 2:

Here is your original code in a "strict" switch statement:

switch(true) {
    case $var === null:
        return 'a';
    default:
        return 'b';
}

This can also handle more complex switch statement like this:

switch(true) {
    case $var === null:
        return 'a';
    case $var === 4:
    case $var === 'foobar':
        return 'b';
    default:
        return 'c';
}

Solution 3:

Not with switch - it only does so called "loose" comparisons. You can always replace it with a if/else if block, using ===.

  • Switch documentation

  • Loose comparisons Docs, too