strpos - 没有给出预期的结果

strpos - not giving expected results

我正在尝试 运行 通过我的数据库中的一些信息来检查项目代码是否作为项目之一包含在内 'keys'。

我原以为这段代码只会向我显示代码不是键的行 - 但是我似乎得到了混合结果(有些代码存在,有些则没有)

我尝试将 true 更改为 false,我得到了一组类似的结果。

   while ($row = mysqli_fetch_array($query)){

        $itemcode = $row['itemcode'];
        $keys = $row['keys'];

        if (strpos($metakeywords, $itemcode) !== true) {
        echo 'code: ' . $itemcode . " keys: " . $metakeywords . "<br /><br />" ;
    }

预期输出:
代码:ABC123 钥匙:花盆,绿色,window
代码:DEF456 按键:蓝色,户外,花园

实际输出:
代码:ABC123 钥匙:花盆,绿色,window
代码:CBA321 钥匙:红色,室内,花盆,CBA321
代码:DEF456 按键:蓝色,户外,花园
代码:FED654 按键:粉色,植物,FED654,自动浇水

有人可以帮忙吗?

strpos 永远不会 return 正确。如果匹配,它 return 是一个数字,否则为 false。由于您希望 if 语句块在不匹配时为 运行,因此将 true 更改为 false !=====:

if ( strpos($metakeywords, $itemcode) === false ) {

strpos() 不 return true 当它找到匹配时,它 return 是匹配的位置。

如果您想知道何时没有匹配项,请使用:

if (strpos($metakeywords, $itemcode) === false) {

不过,您可能完全可以在 SQL 查询中执行此操作,而不是在 PHP 中执行此操作。