1
function check($text){
  if(strpos('a', $text) == FALSE && strpos('b', $text) == FALSE){
    echo 'error';
  } else {
    echo 'ok';
  }
}

echo check('text') . "\n";
echo check('asd') . "\n";
echo check('bnm') . "\n";
echo check('test') . "\n";
echo check('abc') . "\n";

ライブ: http://codepad.org/W025YYuH

なぜこれが機能しないのですか?このリターン:

1 エラー 2 エラー 3 エラー 4 エラー 5 エラー

ただし、次のようにする必要があります。

1 エラー 2 OK 3 OK 4 エラー 5 OK

4

3 に答える 3

6

ドキュメントで説明されているように、=== FALSE代わりに を使用する必要があります== FALSE

さらに、引数の順序が間違っています。繰り返しますが、ドキュメント (または、一部の人が言うように RTM) を参照してください。

于 2013-06-08T15:54:01.310 に答える
2

引数の位置を反転します。最初の引数は文字列で、2 番目の引数は文字列で何を検索するかです。

strpos ( 'The string to search in' ,'the argument of search' )

その場合、'a' の位置が 0 番目 (最初) の文字であるため、== は期待どおりに機能しません。

これを試して:

function check($text){
  if(strpos($text, 'a') === FALSE && strpos($text, 'b') === FALSE){
    echo 'error';
  } else {
    echo 'ok';
  }
}

echo check('text') . "\n";
echo check('asd') . "\n";
echo check('bnm') . "\n";
echo check('test') . "\n";
echo check('abc') . "\n";
于 2013-06-08T15:54:27.490 に答える
1

引数が間違っている場合は、次のように変更します。

 if(strpos($text, 'a') === FALSE && strpos($text, 'b') === FALSE){

falseまた、同一の演算子 (===) でブール値をチェックする必要があることに注意してください。

于 2013-06-08T15:53:43.230 に答える