1

なぜこれが常に返されるのですかtrue

$s = '334rr';
$i = (int)$s;

if ($i == $s) {
    echo true;
} else {
    echo false;
}

エコー$iすると、の値が得られます。これ334は、とは異なります。 $s334rr

4

5 に答える 5

4

マニュアルから:

数値を文字列と比較する場合、または比較に数値文字列が含まれる場合、各文字列は数値に変換され、比較は数値で実行されます。

つまり、指定した値($i == $s)と同じです。($i == (int)$s)

===型ジャグリングを回避するために使用します。

于 2012-09-03T13:05:20.140 に答える
2

を使用して文字列と整数を比較すると==、文字列は整数に大文字小文字を区別しようとします。

于 2012-09-03T13:05:15.543 に答える
2

これを試して

$s = '334rr';
$i = intval($s);
if ($i == $s) {
 echo true;
 } else {
  echo false;
}
于 2012-09-03T13:09:47.773 に答える
0

文字列をintと比較することはお勧めしません。===代わりに、同じデータ型と同じ値を検証するを使用する必要があります。

于 2012-09-03T13:05:39.877 に答える
0

PHPは、別の整数($ i)と比較するときに、$s文字列を整数に変換します。それは基本的にこれを行います(まあ、私はそれが内部で何をするのかわかりませんが、それはこれに要約されます):

if($i == (int) $s)

これはステートメントを真実にします

于 2012-09-03T13:05:53.657 に答える