当多次搜索 1 个字符串时,IF 语句给出错误的结果



所以我有两个字符串:

$title = 'Chair Material Suede Black';
$title = 'Chair Material Suede Red';

这是我的PHP函数的一个片段:

elseif (stripos($title, 'Suede') !== false) {
    if (stripos($title, 'Red') !== false) {
        return 'Red Suede Chair';
    }
    else {return "TEMP_Category";}
}

该函数继续,50 行以下是以下代码:

elseif (stripos($title, 'Suede') !== false) {
        if (stripos($title, 'Black') !== false) {
            return 'Black Suede Chair';
        }
        else {return "TEMP_Category";}
    }

然而,字符串'Chair Material Suede Black'总是返回'TEMP_Category',因为搜索'Red''Suede'是在黑色之前完成的。

有没有办法让它通过'black'搜索?

结合两个检查:

elseif (stripos($title, 'Suede') !== false && stripos($title, 'Red') !== false) {

并将其他的TEMP_Category移动到检查的末尾。

elseif (stripos($title, 'Suede') !== false && stripos($title, 'Red') !== false) {
    return 'Red Suede Chair';
} elseif (stripos($title, 'Suede') !== false && stripos($title, 'Black') !== false) {
    return 'Black Suede Chair';
} else {
    return "TEMP_Category";
}

但是,字符串"椅子材料绒面革黑色"总是返回 "TEMP_Category",因为搜索"红色"和"绒面革"已完成 在黑色之前。

只是为了清楚起见,这仅仅是因为您正在使用elseif (stripos($title, 'Suede') !== false) .所以你永远不会到达第二个(顺便说一句。相同)条件。PHP 将在第一个匹配条件后跳过每隔elseif。因为第一个会返回"TEMP_Category"(因为它不是红色),所以你会得到错误的结果。

接受@Fenton的答案,因为这是您解决它的方式;-)

相关内容

  • 没有找到相关文章

最新更新