不思議なことに、次のコードは true を返します!
if ('1'==1 && '014'==016)
echo 1;
出力は
1
「014」が「016」に等しい理由を誰か教えてもらえますか? この問題を解決するにはどうすればよいですか?また、可能な場合は、データ型が常に変化するため、明示的な変換を避ける必要があります。
私はPHPバージョン5.3.8-ZS5.5.0を使用しています
不思議なことに、次のコードは true を返します!
if ('1'==1 && '014'==016)
echo 1;
出力は
1
「014」が「016」に等しい理由を誰か教えてもらえますか? この問題を解決するにはどうすればよいですか?また、可能な場合は、データ型が常に変化するため、明示的な変換を避ける必要があります。
私はPHPバージョン5.3.8-ZS5.5.0を使用しています
PHP では、先頭にゼロを付けた整数値を使用すると、PHP はそれが 8 進数であると想定します。8 進数の 016 は 10 進数の 14 と同じです。
のような文字列を使用すると、別の整数との比較で使用する'014'
と暗黙的に 10 進数にキャストされます。14
これを試してみてください。
<?php
if (ltrim((int)'1',0) == ltrim(1,0) && ltrim((int)'014',0)== ltrim('016', '0'))
echo 1;