使用php if语句

时间:2015-04-10 00:56:01

标签: php if-statement

我有以下PHP IF语句

<?php
if ($crs_cat1 == "Business"){
  $catimage ="businessImage.png";
}
else if ($crs_cat1 == "Leadership") {
  $catimage = "leadershipImage.png"; 
}

else if ($crs_cat1 == "Media and Design") {
  $catimage = "mediadesignImage.png"; 
}

else if ($crs_cat1 == "Web Development") {
  $catimage = "webdevelopmentImage.png"; 
}

else if ($crs_cat1 == "Mobile Development") {
  $catimage = "mobileDevelopment.png"; 
}

else if ($crs_cat1 == "Project Management") {
  $catimage = "business5.png"; 
}

else if ($crs_cat1 == "Databases and Business Intelligence") {
  $catimage = "businessAnalysis.png"; 
}

else if ($crs_cat1 == "IT Service Management") {
  $catimage = "itService.png"; 
}

else if ($crs_cat1 == "Business Analysis and Agile") {
  $catimage = "businessAnalysis.png"; 
}

else if ($crs_cat1 == "Network Security and OS") {
  $catimage = "networkSecurity.png"; 
}

else if ($crs_cat1 == "Virtualization and Cloud Computing") {
  $catimage = "virtualization.png"; 
}

else if ($crs_cat1 == "Software Quality & Testing Tools") {
  $catimage = "testing.jpg"; 
}

else if ($crs_cat1 == "Microsoft") {
  $catimage = "microsoft2.png"; 
}

else if ($crs_cat1 == "%Adobe%") {
  $catimage = "adobe.png"; 
}

else if ($crs_cat1 == "IBM") {
  $catimage = "ibm.jpg"; 
}

else {
    $catimage = "negotiation.png"; 

}






?>

在if语句中,我希望更像是商业或领导,就某种意义而言,结果不一定非常精确,它必须足够相似。例如,如果==到adobe,标题是adobe dreamweaver,那么它应该填充

2 个答案:

答案 0 :(得分:0)

你可以在&#34; Business&#34;上做一个简单的子串匹配。或&#34;领导力&#34;用strpos。这将发现任何&#34; Business&#34;字符串变量中的子字符串。

if (strpos($crs_cat1, "Business") !== false) {
    $catimage = "businessAnalysis.png"; 
}

请确保您使用&#34;!== false&#34;,而不是&#34; true&#34;或&#34;!false&#34;或其他任何因为返回值实际上是类型依赖的。

有关详细信息,请参阅http://php.net/strpos

另外,值得注意的是stripos将搜索子字符串而不用担心这种情况(不区分大小写)。 http://php.net/stripos

答案 1 :(得分:0)

我建议你使用stripos()或preg_match()。你也可以使用strpos()如果你知道你所匹配的文本的情况肯定会匹配,IE商业,而不是商业或商业

如果您可以敏感地匹配案例 ,则可以节省一些执行时间,但如果是用户输入,则应该对不敏感地匹配案例

与stripos()匹配案例敏感:

if(strpos($crs_cat1, 'Business') !== FALSE){ //code }

将案例敏感与正则表达相匹配:

if(preg_match('/Business/', $crs_cat1)){ //code }

或者,以匹配案例 - INsensitvely(通常建议):

if(stripos($crs_cat1, 'Business') !== FALSE){ //code }

或者,将case-INsensitvely与正则表达式匹配:

if(preg_match('/business/i', $crs_cat1)){ //code }

通常,如果你在一个简单的字符串上匹配,就像在你的例子中一样,你应该坚持使用strpos / stripos。但是,如果你匹配任何复杂类型的匹配,preg_match是很有用的。

我最近在stripos和preg_match之间进行了性能测试,以确认stripos()对于简单的单词匹配仍然更快。

stripos()10000000次迭代:

6.687420129776s

preg_match()10000000次迭代:

9.2206559181213s

RoCksFrow