if else语句中的多个字符串错误

时间:2013-08-30 16:38:50

标签: php if-statement

if($title=="Random 1.5"){ //value1
    $ytitle = "Custom 1.5"; 
    }
else if($title=="Another 1.6"){ //value2
    $ytitle = "Custom 1.6";
    }
else if($title=="Bold Random 1.5"){ //value3
    $ytitle = "Custom 1.7";
    }   

Value1和Value3检索True,因为( Random 1.5 )具有字符串。如何解决这个问题?我想发布 Bold Random 1.5 值。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

你正在做精确的字符串匹配,而不是子字符串匹配,所以除非你的$title值与if()语句中的字符串完全相同,否则你的“随机1.5”和“大胆的随机1.5“将永远匹配。

e.g。

$teststring = 'Random 1.5';

($teststring == 'Random 1.5') // evaluates to TRUE
($teststring == 'Bold Random 1.5') // evaluates to FALSE

但如果你有

strpos('Random 1.5', $teststring) // integer 0 result, not boolean false
strpos('Bold Random 1.5', $teststring) // integer 4 result, not boolean false

都会成功,因为“Random 1.5”会出现在两个被搜索的字符串中。

同样,由于您反复针对多个值测试一个变量,请考虑使用switch()代替:

switch($title) {
   case 'Random 1.5':      $ytitle = 'Custom 1.5'; break;
   case 'Another 1.6':     $ytitle = 'Custom 1.6'; break;
   case 'Bold Random 1.5': $ytitle = 'Custom 1.7'; break;
}