📝

文字列と数値|PHPの型

公開: 2025年08月21日 12時28分
更新: 2025年08月21日 12時41分

プログラミング言語には、「文字列」と「数値」の扱い方に違いがあります。
「型」の違いとも言います。
言語によって様々ですが、共通点は多く、ここではPHPのそれを紹介していきます。
その規則を守らないとバグやエラーが起きると考えてください。

規則の重要性は慣れてくると身に着くものなので、まずは覚えるようにするとよいです。

文字列

"田中太郎"'100'のようにクォートで囲んで表現します。
テキストだけでなく、数字(数値)もクォートで囲むと文字列として扱われます。

数値

1003.14 のようにクォートなしで表現します。
計算(四則演算)に直接使用できます。

PHPは自動で型変換される

PHPは動的型付け言語となっており、"50" + 10のような計算では文字列が自動的に数値に変換されて結果は60になります。

文字列と数値の比較

比較時は注意が必要で、"100" == 100true(値のみ比較)ですが、"100" === 100false(型も含めて比較)になります。
明示的な型変換も可能で、(int)"123"で文字列を整数に、(string)123で数値を文字列に変換できます。
初学者は特に=====の違いを理解することが重要です。

参考コード

.phpファイルとして保存し、Webサーバーで実行してください

<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>PHP文字列と数値の違い</title>
  <style>
    h1 {
      color: #333;
      text-align: center;
      border-bottom: 2px solid #4CAF50;
      padding-bottom: 10px;
    }

    h2 {
      color: #4CAF50;
      border-left: 3px solid #4CAF50;
      padding-left: 10px;
    }

    .result {
      background: #e8f5e8;
      padding: 15px;
      border: 1px solid #4CAF50;
      margin: 15px 0;
      font-family: monospace;
      border-radius: 4px;
    }

    .note {
      background: #fff3cd;
      border: 1px solid #ffeaa7;
      padding: 15px;
      margin: 15px 0;
      border-radius: 4px;
    }

    .explanation {
      background: #f8f9fa;
      padding: 15px;
      margin: 10px 0;
      border-left: 4px solid #6c757d;
      border-radius: 4px;
    }
  </style>
</head>

<body>
  <h1>PHP文字列と数値の違い</h1>

  <h2>1. 文字列とは</h2>
  <div class="explanation">
    文字列は " " で囲みます
  </div>
  <div class="result">
    <?php
    // 文字列は " " で囲む
    $name = "田中太郎";
    $message = "こんにちは";

    echo $name . "<br>";
    echo $message;
    ?>
  </div>

  <h2>2. 数字も文字列にできる</h2>
  <div class="explanation">
    数字を " " で囲むと文字列になります
  </div>
  <div class="result">
    <?php
    // 数字を " " で囲むと文字列になる
    $age = "25";
    $price = "1000";

    echo "年齢: " . $age . "<br>";
    echo "価格: " . $price;
    ?>
  </div>

  <h2>3. 数値とは</h2>
  <div class="explanation">
    数値は " " で囲みません
  </div>
  <div class="result">
    <?php
    // 数値は " " で囲まない
    $age = 25;
    $price = 1000;
    $weight = 65.5;

    echo "年齢: " . $age . "<br>";
    echo "価格: " . $price . "<br>";
    echo "体重: " . $weight;
    ?>
  </div>

  <h2>4. 違いを比べてみる</h2>
  <div class="explanation">
    見た目は同じですが、実は違います
  </div>
  <div class="result">
    <?php
    $str_num = "100";   // 文字列
    $real_num = 100;    // 数値

    echo "文字列の100: " . $str_num . "<br>";
    echo "数値の100: " . $real_num . "<br>";
    echo "見た目は同じだが実は違う";
    ?>
  </div>

  <h2>5. 計算してみる</h2>
  <div class="explanation">
    どちらも計算できます(文字列が自動で数値になる)
  </div>
  <div class="result">
    <?php
    $str = "50";    // 文字列
    $num = 50;      // 数値

    echo "文字列の50 + 10 = " . ($str + 10) . "<br>";
    echo "数値の50 + 10 = " . ($num + 10) . "<br>";
    echo "どちらも計算できる!";
    ?>
  </div>

  <h2>6. 比較の違い</h2>
  <div class="explanation">
    == と === では結果が変わります
  </div>
  <div class="result">
    <?php
    $str = "100";
    $num = 100;

    // == は値だけ比較
    if ($str == $num) {
      echo "== で比較: 同じ<br>";
    } else {
      echo "== で比較: 違う\n";
    }

    // === は型も比較
    if ($str === $num) {
      echo "=== で比較: 同じ<br>";
    } else {
      echo "=== で比較: 違う\n";
    }
    ?>
  </div>

  <h2>7. 型を変換する</h2>
  <div class="explanation">
    (int) や (string) で型を変換できます
  </div>
  <div class="result">
    <?php
    $str = "123";

    // 文字列を数値に変換
    $number = (int)$str;
    echo "文字列を数値に: " . $number . "<br>";

    // 数値を文字列に変換
    $text = (string)$number;
    echo "数値を文字列に: " . $text;
    ?>
  </div>

  <div class="note">
    <strong>まとめ:</strong>
    <ul>
      <li><strong>文字列:</strong> " " で囲む</li>
      <li><strong>数値:</strong> " " で囲まない</li>
      <li><strong>計算:</strong> 文字列でも自動で数値になる</li>
      <li><strong>==:</strong> 値だけ比較</li>
      <li><strong>===:</strong> 型も含めて比較</li>
      <li><strong>変換:</strong> (int) で数値、(string) で文字列</li>
    </ul>
  </div>
</body>

</html>
公開: 2025年08月21日 12時28分
更新: 2025年08月21日 12時41分

コメントや質問をする

メールアドレスが公開されることはありません。

CAPTCHA