答えて
は===を判明本当の結果が表示されます、1つが整数で、もう1つは、彼らがいても、文字列である場合、たとえば10 === 10は、falseになります
問題があります転記された書式から生じる可能性があります。
は私が使用した溶液は:
場合( "$ I" == "$ jの")
彼らは種類に関係なく同じならそれだけでチェックし、このよう
これはPHPの等価演算子の誤解を示しています。 == 2つのオペランドが等しいことをチェックします。 10 == "10"はtrueを返します。 === 2つのオペランドが等しく、同じ型であることを確認するため、10 == "10"はfalseを返しますが、10 === 10はtrueを返します。あなたの '解決策'に二重引用符で囲む必要はありません。 –
私もそう思った。バグを見つけたここでx == yはfalseを与えていました。引用符を追加した後、それは働いた。 –
私はそれがバグだとは思わない、PHPが暗黙的に変数をキャストしているからだ。 'php -r" var_dump((int)'00:15 '); "' 00:15の文字列はint(0)にキャストされ、0と比較されます。 0. –
00:15
が最初に整数にキャストされ、次に$i
と比較されます。 intval()
(キャスティングを行う)は最初の非数字文字で停止するので、00:15
は0にキャストされます。これはゼロに等しくなります。ここにバグはありません。これは==
の演算子の仕組みです。
キャスティングを避けたい場合は、代わりに===
を使用してください。
==
を使用すると、型は比較される前に変換されます。この場合、両方が整数に変換され、数値以外の文字列を整数に変換すると、おそらく0
になります。
代わりに===
演算子を使用すると、期待した結果が得られます。
文字列とint型は、int型のよう比較し00
で始まり、まったく奇妙いないがために、そう$j
がここに0に変換 - 整数と文字列を比較するとき、最初の1は、比較を整数にキャストされています。型チェックのために===
を使用して、
- 1. 条件付き論理AND演算子
- 2. 条件付き演算子の使用
- 3. Spring条件付きアノテーション演算子
- 4. 条件付き演算子の問題
- 5. Powershellの条件付き演算子
- 6. c#NULL条件付き演算子
- 7. JavaScriptの条件付き演算子
- 8. jsの条件付き演算子
- 9. Powershell - 条件付き演算子
- 10. Android lintエラー?:条件付き演算子演算子
- 11. INT付きの条件付き演算子
- 12. 条件付き(3値)演算子の条件
- 13. PHP条件付き演算子と自己代入
- 14. 条件付き三項演算子の誤動作(PHP)
- 15. Seleniumの条件付き演算
- 16. CとC++の間の条件付き演算子の相違
- 17. ASP.NET MVC Razorの新しいnull条件付き演算子
- 18. ES6:スプレッド演算子の条件付き使用
- 19. 3進演算子を反応させた条件付きレンダリング
- 20. 構文null条件付き演算子のギザギザの配列
- 21. std :: numeric_limits <int> :: has_infinity +条件付き3項演算子
- 22. Nullableの条件付き演算子代入<value>タイプ?
- 23. またはC#の条件付き属性の演算子
- 24. null条件付き演算子互換性
- 25. Powershellおよび条件付き演算子
- 26. "||" OR演算子in Rubyの条件付き
- 27. TypeScriptにヌル条件付き演算子がありますか?
- 28. 条件演算子C++のバグ?
- 29. JAVAの条件付き論理演算と文字列演算
- 30. パラメータ付き演算子オーバーロード
ユーザー '場合if($ i == $ j)の代わりに($ i === $ j) ' – Gaurav