所以我有两个字符串:
$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的答案,因为这是您解决它的方式;-)