-4
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)在字符串中。如何解决这个问题?我只想发布粗体随机 1.5值。谢谢你的帮助。

4

1 回答 1

2

您正在执行精确的字符串匹配,而不是子字符串匹配,因此除非您的$title值与 if() 语句中的字符串完全相同,否则您的“随机 1.5”和“粗体随机 1.5”将永远匹配相同的。

例如

$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;
}
于 2013-08-30T16:50:05.250 回答