我有以下代码检查某些变量是否包含某些特定字词。
我确信有一种方法可以真正缩短它。我是一个总菜鸟,所以我无法确定如何优化这段代码。任何帮助都会很棒..!
<?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;
?>
答案 0 :(得分: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;
}
}
}
答案 1 :(得分:2)
第一个优化可以是嵌套的if语句:
if (in_array(1259, $_product->getCategoryIds()) {
if(strpos($fabriquant,'wurd') !== false) {
} elseif ....
}
然后你把最可能的condiction测试作为第一次检查,然后是第二次最可能的条件,等等......
答案 2 :(得分:0)
因为所有if块都有一个共同的组件,所以最好提取它并只测试一次。其他独特的点可以单独检查。
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";
}
}