我正在尝试在较大的字符串中搜索多个字符串,如果它们都不匹配,则操纵原始字符串。这是代码:
$searchthis = 'this is a string'
$arr = array('foo', 'bar');
foreach ($arr as &$value) {
if (strpos($searchthis, $value) !== false) {
break;
}
else{
$searchthis = $searchthis . ' addthis';
}
}
问题是在搜索第一个字符串变量并且不匹配之后,在运行下一个测试之前操作原始搜索字符串。
有什么想法?提前致谢
答案 0 :(得分:6)
您需要检查是否在您的循环之外没有匹配 。您可以通过在找到至少一个字符串时将变量($found
)设置为true
来完成此操作:
$found = false;
foreach ($arr as &$value) {
if (strpos($searchthis, $value) !== false) {
$found = true;
}
}
if (!$found) {
$searchthis = $searchthis . ' addthis';
}
答案 1 :(得分:1)
你的意思是
$searchthis = 'this is a string'
$arr = array('foo', 'bar');
$notfound = true;
foreach ($arr as &$value) {
if (strpos($searchthis, $value) !== false) {
$notfound = false;
break;
}
}
if ($notfound){
$searchthis = $searchthis . ' addthis';
}
答案 2 :(得分:0)
或者像这样:
$searchthis = 'this is a string';
$arr = array('foo', 'bar');
foreach ($arr as &$value) {
if (strpos($searchthis, $value) !== false) {
break;
}
else{
if(!isset($result)) {
$result = $searchthis . ' addthis';
}
else {
continue;
}
}
}