PHP循环搜索字符串,如果不匹配则执行

PHP循环搜索字符串,如果不匹配则执行,php,Php,我试图在一个较大的字符串中搜索多个字符串,如果它们都不匹配,则操纵原始字符串。代码如下: $searchthis = 'this is a string' $arr = array('foo', 'bar'); foreach ($arr as &$value) { if (strpos($searchthis, $value) !== false) { break; } else{ $searchthis = $searchthis . ' addthis'

我试图在一个较大的字符串中搜索多个字符串,如果它们都不匹配,则操纵原始字符串。代码如下:

$searchthis = 'this is a string'
$arr = array('foo', 'bar');
foreach ($arr as &$value) {
  if (strpos($searchthis, $value) !== false) {
    break;
  }
  else{
    $searchthis = $searchthis . ' addthis';
  }
}
问题是,在搜索第一个字符串变量但不匹配之后,在运行下一个测试之前,会对原始搜索的字符串进行操作


有什么想法吗?提前感谢

您需要检查循环外是否有匹配项。当至少找到一个字符串时,可以通过将变量(
$found
)设置为
true
)来完成此操作:

$found = false;
foreach ($arr as &$value) {
  if (strpos($searchthis, $value) !== false) {
    $found = true;
  }
}
if (!$found) {
  $searchthis = $searchthis . ' addthis'; 
}
你是说

$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';
}
或者像这样:

$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;
        }
    }
}

我不认为添加“break”有什么意义,至少在这段代码中没有。break是这样的,如果你在数组的第一个插槽中找到了你的值,你就不会搜索其余的。非常感谢Tim Cooper。这就成功了。我在循环外尝试了,但它设置了$FOND变量以确认我没有得到。干杯@鲁本:你可能误解了这个问题,否则这是个错误。这将在第一个循环中添加/操作字符串。因此,如果我的$arr即使有搜索元素(比如作为数组中的第二个元素),结果也已经有了结果。