質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.91%

この記号の意味は?

解決済

回答 6

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,253

score 133

PHPやJavaScriptのコードを見ていて、「if(!$a)~」の「!」とか「~!==NULL」の「!」をよく見かけますが、「!」は何なんでしょうか
エスケープシーケンスの一種なのでしょうか

追記
否定する意味であるなら、例えばif文で「false」を用いるのと何か異なるんでしょうか
あと否定するくらいなら最初からそのコードを書かなければいいと思うんですが、わざわざ「!」を用いらなければならない処理やコード、あと意味とはどんな内容なのでしょうか
追記
<!DOCTYPE HTML>の「!」はなんでしょうか

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 6

+8

プログラムの基本的な書き方・読み方が分かるまでは、入門書を拾い読みせずきっちり読み切りましょう。
あるいは、文法はリファレンスに解説があります。
PHP: 演算子 - Manual 
!を知らないレベルであれば、このページの目次からのリンクを全部読みましょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+4

否定演算子です。

「!=」でノットイコールを表します。

追記

質問の追記を受けて。
まぁ何にでも疑問を抱くのは大事だと思います。

さて質問者さんが言われるように確かに否定演算子がなくてもコーディングは出来ますが、
否定演算子があることで効率の良い書き方・可読性の高い書き方が実現出来ます。

たとえば1から10の値のいずれかが入る変数があり、
値が5以外なら表示したいとした場合

否定演算子がないとすると以下のようなコードになります。

$i;  // 1〜10のいずれかが入るとする
if ((1 <= $i && $i <= 4 ) || (6 <= $i && $i <= 10)){
    echo $i;
}

これが否定演算子があることで以下のように書けます。

$i;  // 1〜10のいずれかが入るとする
if ($i !== 5){
    echo $i;
}

要するに何とかでない場合に限って処理をしたい場合は、
〜でないという表現をそのままプログラムに記載できる方が、

  • 記述量が減る
  • 意図が明確
  • 可読性も高い

の3つのメリットがあるのです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+2

あと否定するくらいなら最初からそのコードを書かなければいいと思うんですが、わざわざ「!」を用いらなければならない処理やコード、あと意味とはどんな内容なのでしょうか

例えば、案件管理のシステムで、受注状況を検索する機能があるとします。
(受注状況:「引合」、「社内見積」、「見積提出」、「受注」、「失注」、「作業完了」)

その場合、「作業完了」以外のデータを取得したい場合に、
if(受注状況 != "作業完了")
とすると「作業完了」以外のデータが取得できることになります。

!を用いらない場合は、
if(受注状況 == "引合" || 受注状況 == "社内見積" || 受注状況 == "見積提出" || 受注状況 == "受注" || 受注状況 == "失注") 
といったように長いコードを書かなければなりません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

否定なので関係性はこうです

  • true != false
  • true !== false
  • true == !false
  • true === !false
  • !true == false
  • !true == false
  • !true != !false
  • !true !== !false

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/05 10:21

    往々にして関数は成功したらtrueを返すものと、失敗したらfalseを返すものがあります
    それをうまく活用するには否定は重要です。

    キャンセル

+1

否定するくらいなら最初からそのコードを書かなければいいと思うんですが、わざわざ「!」を用いらなければならない処理やコード、あと意味とはどんな内容なのでしょうか

「xが0でないならAをする」

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

PHPのコードに関しては様々な回答者様が記載されているので、追記部分のみを…

追記 
<!DOCTYPE HTML>の「!」はなんでしょうか

これはHTMLの文書宣言ですね。
1行目に記載するHTMLの文書宣言では、タグ名の1文字目に普段絶対使われない!記号を用いる事で、
これは絶対に他と区別しなければならない特別なタグとして強調しているわけです。

なので、もしHTMLで<DOCTYPE>というタグを宣言したくなった場合でもそのまま宣言出来るわけです。
そして、ブラウザーは1行目に宣言されている文書宣言である<!DOCTYPE>を読み込む事で、<DOCTYPE>と混同してしまう事はなくなります。
(まぁDOCTYPEなんてタグ名を使う事はほぼ無いと思いますが、HTML5の世界は一応好き勝手なタグ名が付けられますので…)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る