文字列"0d1"と"0d2"を比較すると, 一致しないと思われるのですが, これが一致することになってしまいます。
if("0d1"=="0d2"){
print('一致しました。');
} else {
print('一致しませんでした。');
}
これを実行すると, "一致しました"と出力されます。
比較を===で行うと, "一致しませんでした"となります。
PHPはversion4.3.5をApacheで使用しています。
OSはWindows 2000です。
この理由がわかる方, どうか回答をよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
まず、== での比較は "0d1", "0d2"が文字列ではなく数値として見なされているからです。
0で始まる数値は8進数ですが、0d1, 0d2ともに8進数に変換できずに 0になっているため「等しい」と判断されています。
「$a === $bは、 $a が $b に等しく同じ型である場合に TRUE」とマニュアルに書かれていますが、なぜ等しくないと判断されるのか資料を見つけることができませんでした。
if("0d1"=="0d2"){
を
if(strval("0d1") == strval("0d2")){
と強制的に文字列に変換しても、変換前に数値と判断されてしまうようで「等しい」という結果になりました。
=== は""引用符を文字列と判断させる仕掛けがあって、文字列として比較するのではないかと憶測できます。
追試として、
if(091 === 092){ ...一致
if("091" === "092"){ ...不一致
でした。
以上参考になれば幸いです。
回答ありがとうございます!
完全に納得できました。
変数の型がゆるい言語の代償として, 値の内容に注意して
スクリプトを組んでいきたいと思います。
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) 【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。 3 2023/03/23 17:30
- Visual Basic(VBA) VBAでセル同士を比較して色付け 4 2023/03/06 19:57
- Java Java 南京錠 2 2023/02/04 11:46
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- 生物学 組換え価と表現型分離比が一致しない理由について 検定交雑では、配偶子の種類とその分離比は、表現型のも 1 2022/04/25 00:54
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでPが2個あるので分かりず...
-
PHPにおいて16進数のアスキー文...
-
php→JavaScript間の変数受け渡し
-
文字列を%+2桁のヘキサ
-
onedrive にexcelファイルをア...
-
PEARのmimeDecodeでメール解析...
-
拡張子php画像をjpg画像等に変...
-
フォームで戻った際に入力済み...
-
2つの画像ファイルが異なるファ...
-
PHP フォルダ名やファイル名に0...
-
form actionで二つ送信先を指定...
-
さくらサーバーにて、phpからメ...
-
mysql複数レコードをまとめて削...
-
WordPressでテーマのヘッダー画...
-
日本語ファイル名のアップロー...
-
フォントの色を変えるには?
-
こちらはただの直列処理ですか?
-
.htaccessにphp_valueが使用できな
-
VBでクラウドストレージにア...
-
libphp5.so がないと?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php文字列中のシングルクオート...
-
PHP,Perl の正規表現で”ー"...
-
php→JavaScript間の変数受け渡し
-
リダイレクトできません。クエ...
-
0dで始まる文字列の比較がうま...
-
PHPのプログラムについて
-
PHPにおいて16進数のアスキー文...
-
終端識別子 とは?
-
パラメーター付きのURLをリダイ...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
index.phpに入るには、どうすれ...
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
PHP8を使うと、大量のWarningが...
-
別ファイルの変数を呼び出した...
-
index.phpって何ですか? 具体...
-
awsにApacheとPHPを入れて、何...
-
Subversionのリポジトリの削除
-
phpでPEAR::DBを使っているので...
おすすめ情報