Php 在多次搜索1个字符串时,IF语句给出了错误的结果
所以我有两个字符串:Php 在多次搜索1个字符串时,IF语句给出了错误的结果,php,string,stripos,Php,String,Stripos,所以我有两个字符串: $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 {retur
$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'
是在搜索黑色之前完成的
有没有办法让它进入“黑色”搜索?将两个检查结合起来:
elseif (stripos($title, 'Suede') !== false && stripos($title, 'Red') !== false) {
并将else with TEMP_类别移动到检查的末尾
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";
}
将两个检查组合起来:
elseif (stripos($title, 'Suede') !== false && stripos($title, 'Red') !== false) {
并将else with TEMP_类别移动到检查的末尾
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";
}
但是,字符串“椅子材质翻毛皮黑色”总是返回
“临时类别”,因为“红色”和“绒面革”的搜索已完成
在黑色之前
为了清楚起见,这仅仅是因为您使用的是elseif(stripos($title,'Suede')!==false)
。所以你永远不会达到第二个(顺便说一句,相同的)条件。在第一个匹配条件之后,PHP将每隔一个elseif
跳过一次。
因为第一个将返回“TEMP_Category”(因为它不是红色),所以您得到了错误的结果
接受@Fenton的答案,因为这是你解决问题的方法;-)
但是,字符串“椅子材质翻毛皮黑色”总是返回
“临时类别”,因为“红色”和“绒面革”的搜索已完成
在黑色之前
为了清楚起见,这仅仅是因为您使用的是elseif(stripos($title,'Suede')!==false)
。所以你永远不会达到第二个(顺便说一句,相同的)条件。在第一个匹配条件之后,PHP将每隔一个elseif
跳过一次。
因为第一个将返回“TEMP_Category”(因为它不是红色),所以您得到了错误的结果
接受@Fenton的答案,因为这是你解决问题的方法;-) 可能是因为它首先碰到了绒面革/红块。在第一个绒面革检查内部添加黑色检查,使用
else if
if(hasSuede){if(isRed){return“red”;}elseif(isBlue){return“blue”;}return“Suede”;}
在同一个变量中有两个字符串?可能是因为它首先碰到了绒面革/红色块。在第一个绒面革检查中添加黑色检查,使用else if
if(hasSuede){if(isRed){return“red”;}elseif(isBlue){return“blue”;}return“Suede”;}
在同一个变量中有两个字符串吗?