[解決済み] "!==" と "==!" の違いについて [クローズド]
2022-04-24 20:57:13
質問
昨日、他の人が書いたPHPのコードを修正したときにつまずいた。単純な比較(
if ($var ==! " ")
が期待通りに動かなかった。いくつかのテストの後、そのコードを書いた人が
==!
ではなく
!==
を比較演算子として使用します。私はこれまで
==!
というわけで、このコードが一体どのように動作するのか不思議に思い、いくつかテストしてみました。
<?php
echo "int\n";
echo "1 !== 0: "; var_dump(1 !== 0);
echo "1 !== 1: "; var_dump(1 !== 1);
echo "1 ==! 0: "; var_dump(1 ==! 0);
echo "1 ==! 1: "; var_dump(1 ==! 1);
echo "bool\n";
echo "true !== false: "; var_dump(true !== false);
echo "true !== true: "; var_dump(true !== true);
echo "true ==! false: "; var_dump(true ==! false);
echo "true ==! true: "; var_dump(true ==! true);
echo "string\n";
echo '"a" !== " ": '; var_dump("a" !== " ");
echo '"a" !== "a": '; var_dump("a" !== "a");
echo '"a" ==! " ": '; var_dump("a" ==! " ");
echo '"a" ==! "a": '; var_dump("a" ==! "a");
?>
このように出力されます。
int
1 !== 0: bool(true)
1 !== 1: bool(false)
1 ==! 0: bool(true)
1 ==! 1: bool(false)
bool
true !== false: bool(true)
true !== true: bool(false)
true ==! false: bool(true)
true ==! true: bool(false)
string
"a" !== " ": bool(true)
"a" !== "a": bool(false)
"a" ==! " ": bool(false)
"a" ==! "a": bool(false)
この演算子は、ブーリアン変数や整数変数には使えるようですが、文字列には使えないようです。このため
==!
PHP のドキュメントや検索エンジンにこの件に関する記述はありません (Google, Bing, DuckDuckGo を試してみましたが、文字列を検索するのではなく、解釈しようとしたのではないかと思われます)。どなたか、この動作を見たことがあり、この動作について何かわかる方はいらっしゃいますか?
解決方法は?
違いは、演算子がないことです。
==!
.
この式は
$a ==! $b
基本的にはこれと同じです。
$a == (!$b)
関連
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み】PHPからPythonスクリプトを実行する
-
[解決済み] require, include, require_once, include_onceの違い?
-
[解決済み] パブリック、プライベート、プロテクトの違いは何ですか?
-
[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
-
[解決済み] MercurialとGitの違いは何ですか?
-
[解決済み] イコール、エクル、==、==の違いは何ですか?
-
[解決済み】ビットシフト(bit-shift)演算子とは、どのようなもので、どのように機能するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】DateTimeクラスのオブジェクトを文字列に変換できない
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。
-
[解決済み】C/C++の"-->"演算子とは何ですか?