Php 为什么strpos第一次有效,而第二次无效?

Php 为什么strpos第一次有效,而第二次无效?,php,strpos,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, "epo

我使用的是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”$类型应为“Monobloc”,而$涂层应为“镀锌棒”。问题是它很好地分配了$类型,但在涂层中,它没有在if条款中输入。

如以下所述:

警告

此函数可能返回布尔值FALSE,但也可能返回 计算结果为FALSE的非布尔值。请阅读关于 更多信息请参见布尔值。使用===运算符测试 此函数的返回值

您正在用
==true
而不是
!==检查结果错误

因此,请尝试以下代码:

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";
}
如合同所述:

警告

此函数可能返回布尔值FALSE,但也可能返回 计算结果为FALSE的非布尔值。请阅读关于 更多信息请参见布尔值。使用===运算符测试 此函数的返回值

您正在用
==true
而不是
!==检查结果错误

因此,请尝试以下代码:

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";
}

此行应触发语法错误:
if($word,“galva”)==true){
error reporting/reading logs在这里会有所帮助。请给出$word的示例,它是否总是包含类型和涂层?此行应触发语法错误:
if($word,“galva”)==true){
错误报告/读取日志在这里会有所帮助。您能举个$word的例子吗,它是否总是包含类型和涂层?