2

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

$searchthis = 'this is a string'
$arr = array('foo', 'bar');
foreach ($arr as &$value) {
  if (strpos($searchthis, $value) !== false) {
    break;
  }
  else{
    $searchthis = $searchthis . ' addthis';
  }
}

问题是在搜索第一个字符串变量并且不匹配之后,原始搜索的字符串在运行下一个测试之前被操纵。

有什么想法吗?提前致谢

4

3 回答 3

6

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

$found = false;
foreach ($arr as &$value) {
  if (strpos($searchthis, $value) !== false) {
    $found = true;
  }
}
if (!$found) {
  $searchthis = $searchthis . ' addthis'; 
}
于 2012-06-13T14:22:05.290 回答
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';
}
于 2012-06-13T14:23:46.263 回答
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;
        }
    }
}
于 2012-06-13T14:24:53.190 回答