为什么strpos第一次工作,但第二次不工作?

时间:2019-12-18 10:46:44

标签: php strpos

我正在使用strpos两个计时器。在第一个if / else效果很好,但在第二个效果不理想。这是我的代码:

if (strpos($word, "mono") == true) {
    $type = "Monobloc";
} else {
    $type = "Articulated";
}

if ($word, "galva") == true) {
    $coating = "Galvanized Rod";
} elseif (strpos($word, "epoxi") == true) {
    $coating = "EPOXI 100%";
} elseif ($word, "electro") == true) {
    $coating = "Electrozinced";
}

示例: 如果变量词的值为“ galva-mono”,则$ type应该是“ Monobloc”,而$ coating应该是“ Galvanized Rod”。问题在于,它很好地分配了$ type,但是在涂层中却没有输入if子句。

1 个答案:

答案 0 :(得分:2)

official documentation中所述:

  

警告

     

此函数可能返回布尔FALSE,但也可能返回   非布尔值,其值为FALSE。请阅读以下内容   有关更多信息的布尔值。使用===运算符测试   该函数的返回值。

您正在使用== true而不是!== false检查结果。

因此,请尝试以下代码:

if (strpos($word, "mono") !== false) {
    $type = "Monobloc";
} else {
    $type = "Articulated";
}

if (strpos($word, "galva") !== false) {
    $coating = "Galvanized Rod";
} elseif (strpos($word, "epoxi") !== false) {
    $coating = "EPOXI 100%";
} elseif (strpos($word, "electro") !== false) {
    $coating = "Electrozinced";
}