首页 > 解决方案 > 为什么 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";
}

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

标签: phpstrpos

解决方案


官方文档中所述:

警告

此函数可能返回布尔值 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";
}

推荐阅读