簡體   English   中英

在多種情況下具有相同值的PHP switch語句

[英]PHP switch statement with same value in multiple cases

與使用多個if相比,我真的很喜歡switch語句的結構。 但是,有時候我想使用switch語句,並且在多種情況下具有相同的值。 可以以某種方式做到這一點嗎?

switch($fruit) {
  case 'apple':
  case 'orange':
    // do something for both apples and oranges
    break;

  case: 'apple':
    // do something for only apples
    break;

  case: 'orange':
    // do something for only oranges
    break;
}

我希望我的榜樣能說明我打算做什么...

不,它不能。 匹配的第一種case及其后的所有內容,直到第一個break語句或switch語句的末尾都將執行。 如果您break ,則會中斷switch語句,並且無法重新輸入。 您能做的最好的事情是:

switch ($fruit) {
    case 'apple':
    case 'orange':
        ...

        switch ($fruit) {
            case 'apple':
                ...
            case 'orange':
                ...
        }
}

但實際上,不是。 如果您需要個人前這兩個部分專項行動switch ,做一個if (in_array($fruit, ['apple', 'orange'])) ...的前switch 或重新考慮整個程序的邏輯和結構。

創建一些函數並按以下方式進行:

switch($fruit) {

  case: 'apple':
    apple_and_orange_function();
    apple_function();
    break;

  case: 'orange':
    apple_and_orange_function();
    orange_function();
    break;
}

您不能多次匹配某些內容,但是可以編寫如下的級聯:

switch($fruit) {
  case 'apple':
    // do something for only apples
  case 'orange':
    // do something for both apples and oranges
    break;
  case: 'grapefruit':
    // do something for only grapefruits
    break;
}

不過,您只能使用if-else或deceze的解決方案來執行所需的操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM