如何处理不同类型的PHP开关?结论

php
2022-08-30 23:00:36

我如何使开关尊重数据类型(是否有比if/else更好的解决方法)?

  • $value = 假;应回声为假
  • $value = 空值;应回显空值
    
    switch ($value) {
        case '0' :
            echo 'zero';
            break;
        case '' :
            echo 'empty';
            break;
        case null :
            echo 'null';
            break;
        case false :
            echo 'false';
            break;
        default :
            echo 'default';
            break;
    }
    
    

    结论

  • 开关/机箱进行松散比较。
  • 解决方案:使用 ifs 或 if/else 进行切换

  • 答案 1
    switch (true) {
        case $value === '0' :
            echo 'zero';
            break;
        case $value === '' :
            echo 'empty';
            break;
        case $value === null :
            echo 'null';
            break;
        case $value === false :
            echo 'false';
            break;
        default :
            echo 'default';
            break;
    }
    

    我认为,它比下面给出的-链更具可读性:if-elseif

    if ($value === '0') {
      echo 'zero';
    } else if ($value === '') {
      echo 'empty';
    } else if ($value === null) {
      echo 'null';
    } else if ($value === false) {
      echo 'false';
    } else {
      echo 'default';
    }
    

    答案 2

    我相信你可以尝试if-then来促进使用“===”代替:

    <?php
    $value = 0;
    
    if ($value==="") {
      echo "blank (string)";
    }
    else
    if ($value==="0") {
      echo "zero (string)";
    }
    else
    if ($value===false) {
      echo "false (boolean)";
    }
    else
    if ($value===null) {
      echo "null (object)";
    }
    else
    if ($value===0) {
      echo "zero (number)";
    }
    else {
      echo "other";
    }
    ?>
    

    推荐