2010-12-08 128 views
1

以下是示例代码。开关问题

<?php 
$a =2; 
switch($a) { 
    case 1: 
    case 2: 
    case 3: 
     echo "Logic for error validations"; 

    case 1: 
     echo "1. code to be executed"; 
     break; 

    case 2: 
     echo "2. code to be executed"; 
     break; 

    case 3: 
     echo "3. code to be executed"; 
     break; 

    case 4: 
     echo "4. code to be executed"; 
     break; 

    case 5: 
     echo "5. code to be executed"; 
     break; 
} 
?> 

对于$a作为1,2,3我有相同的错误校验做..更新逻辑为$一个的每个值再次不同的值。

为了达到上述逻辑,我使用了案例1:案例2:案例3:并没有故意使用BREAK。所以它会继续执行。

但它导致o/p, 错误验证的逻辑1.要执行的代码

现在预期的输出为用于错误验证的逻辑2.要执行的代码

请帮我或建议更改以产生预期输出。我可以使用IF并根据$ a的值更改代码。但我正在尝试使用开关的帮助,这可以扩展到$ a的范围值。

回答

5

你不能有重复的情况下的值。你将不得不做下面的事情。

<?php 
$a =2; 
switch($a) { 
    case 1: 
     error(); 
     echo "1. code to be executed"; 
     break; 
    case 2: 
     error(); 
     echo "2. code to be executed"; 
     break; 
    case 3: 
     error(); 
     echo "3. code to be executed"; 
     break; 
    case 4: 
     echo "4. code to be executed"; 
     break; 
    case 5: 
     echo "5. code to be executed"; 
     break; 
} 

function error() 
{ 
    echo "Logic for error validations"; 
} 


?> 

希望这会有所帮助。

+0

+1,谢谢你的回复。 Gud解决问题。 – satya 2010-12-08 14:13:49

1

我建议使用2个case语句,第一个包含错误验证,第二个处理结果。

4

不能在case中使用两次相同的值。

<?php 
$a =2; 
switch($a) { 
case 1: 
case 2: 
case 3: 
    echo "Logic for error validations"; 
} 
switch($a) { 
case 1: 
    echo "1. code to be executed"; 
    break; 
case 2: 
    echo "2. code to be executed"; 
    break; 
case 3: 
    echo "3. code to be executed"; 
    break; 
case 4: 
    echo "4. code to be executed"; 
    break; 
case 5: 
    echo "5. code to be executed"; 
    break; 
} 
?> 
+0

+1,谢谢你的回复。 Gud解决问题。 – satya 2010-12-08 14:12:28

2

将其拆分为两个开关。它通常是一个坏主意,有相同的标签两次开关

switch($a) { 

    case 1: 
    case 2: 
    case 3: 
     echo "Logic for error validations"; 
} 

switch($a){ 
    case 1: 
     echo "1. code to be executed"; 
     break; 

    case 2: 
     echo "2. code to be executed"; 
     break; 

    case 3: 
     echo "3. code to be executed"; 
     break; 

    case 4: 
     echo "4. code to be executed"; 
     break; 

    case 5: 
     echo "5. code to be executed"; 
     break; 

} 
3

尝试做第二开关

<?php 
$a =2; 
switch($a) { 

    case 1: 
    case 2: 
    case 3: 

     echo "Logic for error validations"; 
     switch($a){ 
      case 1: 
      echo "1. code to be executed"; 
      break; 
     } 

    break; 

} 

?>