bugfix> php > 投稿

WordPressテーマ内でif-elseステートメントを使用しています。ケース/スイッチを使用してIFとELSEを実行するよりクリーンな方法が必要です。

これは私の現在のコードです:

           if($theme_measure_icon->slug == 'elektrisch-rijden'):
                $icon_class = 'icon--scooter';
            endif;
            if($theme_measure_icon->slug == 'efficient-laden'):
                $icon_class = 'icon--battery';
            endif;
            if($theme_measure_icon->slug == 'stadshubs'):
                $icon_class = 'icon--logistiek';
            endif;
<i class="icon <?= $icon_class; ?>"></i>

PHPクラスで同じことを行うにはどうすればよいですか?

回答 3 件
  • 代わりに、配列をアイコンマップとして使用するのはどうですか。

    PHP:

    $icon_map = array(
        'elektrisch-rijden' => 'icon--scooter',
        'efficient-laden'   => 'icon--battery',
        'stadshubs'         => 'icon--logistiek',
    );
    $icon_class = isset( $icon_map[ $theme_measure_icon->slug ] ) ? $icon_map[ $theme_measure_icon->slug ]  : '';
    
    

    HTML:

    <i class="icon <?= $icon_class; ?>"></i>
    
    

    次に、使用可能なアイコンを追加または削除するには、修正するだけです。 $icon_map アレイ。

    isset()を使用して、適切なアイコンが配列内にあるかどうかを最初に確認し、未定義のオフセット警告を回避していることに注意してください。

  • スラッグに応じて取得できる値を使用して連想配列を定義する方がはるかに簡単で読みやすいIMOです。

    $classes = [
        'elektrisch-rijden' => 'icon--scooter',
        'efficient-laden' => 'icon--battery',
        'stadshubs' => 'icon--logistiek',
    ];
    <i class="icon <?= $classes[$theme_measure_icon->slug] ?>"></i>
    
    

  • この次のアプローチを試して、switchステートメントで探しているものを実現する必要があります。

    switch ($theme_measure_icon->slug) {
      case 'elektrisch-rijden':
        $icon_class = 'icon--scooter';
        break;
      case 'efficient-laden':
        $icon_class = 'icon--battery';
        break;
      case 'stadshubs':
        $icon_class = 'icon--logistiek';
        break;
      default:
        // code to be executed for your default icon class, you can remove this if you don't want it there
    }
     <i class="icon <?= $icon_class; ?>"></i>
    
    

あなたの答え