簡體   English   中英

帶有多個表達式的php switch語句

[英]php switch statement with multiple expressions

我有6個html選擇框。 每個選擇框包含三個值(最近媒體,大眾媒體,評論媒體),並且我有變量$item->content1$item->content6每個變量返回選擇框。 我在下面通過switch語句創建此代碼,因為我想一次使用switch語句,而不是使用6次。

該代碼有效,但是每次都返回最近的媒體,而不返回流行和評論媒體。 我如何解決此問題,直到我的代碼正確並返回所有情況?

function YPE_bsn_show_diffcontent(&$item_output, $item) {
        switch (true) {
            case ($item->content1 == 'recent-media' OR $item->content2 == 'recent-media' OR $item->content3 == 'recent-media' OR $item->content4 == 'recent-media' OR $item->content5 == 'recent-media' OR $item->content6 == 'recent-media'):
                YPE_Bsn_Content::YPE_bsrecent_media($item_output, $item);
                break;
            case ($item->content1 == 'popular-media' OR $item->content2 == 'popular-media' OR $item->content3 == 'popular-media' OR $item->content4 == 'popular-media' OR $item->content5 == 'popular-media' OR $item->content6 == 'popular-media'):
                YPE_Bsn_Content::YPE_bspopular_media($item_output, $item);
                break;
            case ($item->content1 == 'comment-media' OR $item->content2 == 'comment-media' OR $item->content3 == 'comment-media' OR $item->content4 == 'comment-media' OR $item->content5 == 'comment-media' OR $item->content6 == 'comment-media'):
                YPE_Bsn_Content::YPE_bscomments_media($item_output, $item);
                break;
            default:
                $item_output .= 'You don\'t selected content for first column';
                break;
        }
}

您不是在切換變量而是在切換常量,那么結果總是相同的

     switch (true) {

         case 
             .....
    }

切換適當的相關變量

     switch ($item->content1 ) {
           case 'recent-media': 
                your code fo recent media 
                break;
           ....
           case 'popular-media': 
                your code fo popular media  
                break;
           case 'comment-media': 
                your code fo comment  media 
                break;
    }

基本上,您以錯誤的方式使用swithc,請參閱php doc以進行正確使用

在您的情況下,您需要(而不是切換)

  function YPE_bsn_show_diffcontent(&$item_output, $item) {
        if  ($item->content1 == 'recent-media' OR 
              $item->content2 == 'recent-media' OR 
              $item->content3 == 'recent-media' OR 
              $item->content4 == 'recent-media' OR 
              $item->content5 == 'recent-media' OR 
              $item->content6 == 'recent-media')  {
                YPE_Bsn_Content::YPE_bsrecent_media($item_output, $item);
                return;
        }
        if  ($item->content1 == 'popular-media' OR 
              $item->content2 == 'popular-media' OR 
              $item->content3 == 'popular-media' OR 
              $item->content4 == 'popular-media' OR 
              $item->content5 == 'popular-media' OR 
              $item->content6 == 'popular-media') {
                YPE_Bsn_Content::YPE_bspopular_media($item_output, $item);
                return;
        }
        if  ($item->content1 == 'comment-media' OR 
              $item->content2 == 'comment-media' OR 
              $item->content3 == 'comment-media' OR 
              $item->content4 == 'comment-media' OR 
              $item->content5 == 'comment-media' OR 
              $item->content6 == 'comment-media') {
                YPE_Bsn_Content::YPE_bscomment_media($item_output, $item);
                return;
        }

       $item_output .= 'You don\'t selected content for first column';
       return ;
    }

暫無
暫無

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

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