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

loop の外側で一致がなかったかどうかを確認する必要があります。少なくとも 1 つの文字列が見つかったときに変数 ( $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 に答える