奇妙なPHP構文です、解決してください!
文字列が bun string であるかどうかを判断するために使用される PHP メソッドの戻り値が、メソッド strpos では非常に奇妙であることがわかりました。
次のステートメントを見てください:
echo "A1: ".(strpos("csd","c"))."
"; / /0
echo "A2: ".(strpos("csd","c")>=0)."
"; 1
echo "B1: ".(strpos("csd","h",0))."
"; " B2: ".(strpos("csd","h",0)>=0)."
"; //1
//期待値はソース文字列 "abc" に部分文字列 "a" が含まれていることです。ここでの結果は期待値と同じです if(
strpos("abc ","a")>=0){
echo " abc の a"."
abc の a}
else
{
echo "a not in abc"."
";}
// 期待される値は、ソース文字列 "abc" に字幕文字列 "u" が含まれていないことを意味し、結果は期待値と逆になります
if(strpos("abc","u" )>=0){
echo "abc の u"."
" // u in abc
} else
{
echo "u not in abc"."
";
}
// 期待される値は、ソース文字列 "a" が部分文字列 "abc" より小さく、ソース文字列 "a" には部分文字列 "abc" が含まれていないことです。部分文字列 "abc"。ここでの結果は期待値と逆です
strpos("a","abc")>=0){
echo "abc in a"."
"; //abc in a}
else
{
echo "abc not in a"."
";}
//期待値は、ソース文字列 "u" が部分文字列 "abc" より小さく、ソース文字列 "u" に含まれないことです。部分文字列 "abc" の場合、ここでの結果は期待値と逆になります
strpos("u","abc")> =0){
echo "abc in u "."
"; //abc in u }
else
{
echo "abc not in u"."
";}
A1: 0
A2: 1
B1:
B2: 1
a in abc
u in abc
abc in a
abc in u
strpos() 関数の戻り値別の文字列内で最初に出現した文字列。
文字列が見つからない場合は false を返します。
strpos(string,find,start)
参数 | 描述 |
---|---|
string | 必需。规定被搜索的字符串。 |
find | 必需。规定要查找的字符。 |
start | 可选。规定开始搜索的位置。 |
このPHPの判定方法はC# と JAVA は大きく異なります。
PHP では、ソース文字列に部分文字列が含まれていない場合、ソース文字列は部分文字列より小さいため、null 値として返されます。
条件文の後、if(strpos("abc","u")>=0) および if(strpos("u","abc) ")>=0)、値は再び true になります。
この形式は非常に奇妙だと思います。初心者や他の言語 (JAVA、C#) から PHP を学習している人は非常に混乱するかもしれません。 .
ここで、たとえば文字列「abc」に「a」が含まれているかどうかを判断したい場合、どの方法がより良いかを教えてください。 ?