Php 如何在切换方法中添加多个条件案例?

Php 如何在切换方法中添加多个条件案例?,php,Php,有没有一种方法可以在php中的switch方法中包含多个case?是的,这是可能的 下面是一个例子 <? $i = 1; $j = 10; switch($i) { case "2": echo "The value is 2"; break; case ($i==1 && $j==10):

有没有一种方法可以在php中的switch方法中包含多个case?

是的,这是可能的

下面是一个例子

<?
      $i = 1;
      $j = 10;

      switch($i) {
            case "2":
                   echo "The value is 2";
                   break;
            case ($i==1 && $j==10):
                   echo "Your exceptional Switch case is triggered";
                   break;
            default:
                   echo "Invalid";
                   break;
     }
?>

简单地嵌套交换机有什么问题

$i = 1;
$j = 10;

switch($i) {
    case 2:
        echo "The value is 2";
        break;
    case 1:
        switch($j) {
            case 10:
                echo "Exception Case";
                break;
            default:
                echo "The value is 1";
                break;
        }
        break;
    default:
        echo "Invalid";
        break;
}

switch
语句通过依次计算每个
case
表达式并将结果与
switch
表达式进行比较来工作。如果这两个表达式等效,则执行case块(在
break
/
continue
构造建立的约束范围内)。您可以使用此事实将任意布尔表达式作为
case
表达式包含在内。例如:

<?php

$i = 3;
$k = 'hello world';

switch (true) {
    case 3 == $i and $k == 'hi there';
        echo "first case is true\n";
    break;

    case 3 == $i and $k == 'hello world';
        echo "second case is true\n";
    break;
} //switch

?>

我不经常使用这种结构(相反,我更喜欢避免这种复杂的逻辑),但有时会出现一个复杂的
if-then
语句,它可以使这样的代码片段更容易阅读。

如果使用$I=0和$j=10,以及一个case($I==0&$j==10),这会给我们带来什么?您的示例之所以有效,是因为$i==1&&$j==10的计算结果为布尔值True,而在PHP的松散键入中,$i等于True,值为$1。如果$i的值为0,($i==1&&$j==10)仍然等同于布尔值True,但是松散类型比较与$i的值0相对,后者等同于布尔值false。。。。因此不匹配是因为案例“2”将$i键入字符串,然后如果$i不为空,$i==1变为true==true吗?这很无聊,试试starx中的一个,速度更快
second case is true