0

一部の変数に特定の単語が含まれているかどうかを確認する次のコードがあります。

これを本当に短くする方法があると確信しています。私は初心者なので、このコードを最適化する方法がわかりません。どんな助けでも素晴らしいでしょう..!

<?php
if (in_array(1259, $_product->getCategoryIds()) && (strpos($fabriquant,'word') !== false)) {
    echo "Doh";
} elseif (in_array(1259, $_product->getCategoryIds()) && (strpos($fabriquant,'wurd') !== false)) {
    echo "Bam";
} elseif (in_array(1259, $_product->getCategoryIds()) && (strpos($fabriquant,'ward') !== false)) {
    echo "Yes";
} elseif (in_array(1259, $_product->getCategoryIds()) && (strpos($fabriquant,'wierd') !== false)) {
    echo "No";
}
endif;
?>
4

3 に答える 3

3
if (in_array(1259, $_product->getCategoryIds())) {
  $words = array(
    'word' => 'Doh',
    'wurd' => 'Bam',
    'ward' => 'Yes',
    'wierd' => 'No',
  );

  foreach ($words as $word => $message) {
    if (false !== strpos($fabriquant, $word)) {
      echo $message;
      break;
    }
  }
}
于 2013-01-29T16:16:34.540 に答える
2

最初の最適化は、ネストされた if ステートメントを実行することです。

if (in_array(1259, $_product->getCategoryIds()) {
  if(strpos($fabriquant,'wurd') !== false) {
  } elseif ....
}

次に、最初のチェックとして最も可能性の高い条件をテストし、次に 2 番目に可能性の高い条件など...

于 2013-01-29T16:16:00.277 に答える
0

すべての if ブロックには共通のコンポーネントがあるため、それを抽出して 1 回だけテストすることをお勧めします。その他のユニークな点は、個別に確認できます。

if ( in_array(1259, $_product->getCategoryIds()) )
{
    if ( strpos($fabriquant,'word') !== false ) {
        echo "Doh";
    } elseif ( strpos($fabriquant,'wurd') !== false ) {
        echo "Bam";
    } elseif ( strpos($fabriquant,'ward') !== false ) {
        echo "Yes";
    } elseif ( strpos($fabriquant,'wierd') !== false ) {
        echo "No";
    }
}
于 2013-01-29T16:16:08.267 に答える