PHPのデータ型とは?文字列・数値・型変換の使い方を解説

PR PHP

PHPのデータ型とは?文字列・数値・型変換の使い方を解説

💡 この記事でわかること

  • データ型とは何か、なぜ意識する必要があるのか
  • 文字列(string)・整数(int)・小数(float)・真偽値(bool)の違い
  • var_dump()・gettype()で型を調べる方法
  • (int)・(string)・(float)による型変換(キャスト)
  • フォームの値が文字列になる点、=====の違い

1. データ型とは?

データ型とは、
👉 プログラムが扱う値の「種類」のことです。「文字列」「整数」「小数」「真偽値」などの種類があり、種類によってできる操作が変わります。

💡 PHPでは変数を作るときに型を宣言しませんが、値そのものには必ず型があります。たとえば数値の足し算は +、文字列の連結は .(ドット)と、型によって使う記号も変わります。

<?php
echo 1 + 2;         // 3(数値の足し算)
echo "1" . "2";     // 12(文字列の連結)

変数や echo の基本をまだ確認していない場合は、先にこちらを読んでおくとスムーズです。

👉 PHPの基本文法(<?php ?>・echo・変数)についての記事はこちら


2. 文字列型(string)

文字列は文字の並びを表す型です。シングルクォート ' かダブルクォート " で囲みます。

<?php
$name = "太郎";

echo $name . "さん";          // 太郎さん(. で連結)
echo str_repeat("=", 10);      // ==========(繰り返し)

$message = "こんにちは";
$message .= "、太郎さん";       // .= で末尾に追加
echo $message;                 // こんにちは、太郎さん

👉 連結は .、末尾への追加は .= を使います。文字を繰り返したいときは str_repeat() を使います(* は使えません)。

💡 日本語の文字数を数えるときは strlen() ではなく mb_strlen() を使いますstrlen("太郎") はバイト数の 6 を返しますが、mb_strlen("太郎") は文字数の 2 を返します。

ダブルクォートの中では変数がそのまま展開されるため、数値を文字列に混ぜるときも型変換なしで書けます。

<?php
$price = 500;
$count = 3;

echo "合計 {$price} 円 / 残り {$count} 個";   // 合計 500 円 / 残り 3 個

3. 数値型(int・float)

  • int(整数):10-30 など、小数点のない数
  • float(小数):3.140.5-1.0 など、小数点のある数
<?php
$a = 7;
$b = 2;

echo $a + $b;          // 9
echo $a - $b;          // 5
echo $a * $b;          // 14
echo $a / $b;          // 3.5   ← 割り切れないと float になる
echo $a % $b;          // 1     ← 余り
echo $a ** $b;         // 49    ← 7 の 2 乗
echo intdiv($a, $b);   // 3     ← 整数の商(切り捨て)

👉 / は、割り切れれば int、割り切れなければ float を返します(4 / 227 / 23.5)。整数の商がほしいときは intdiv() を使います。

💡 float の計算では、0.1 + 0.20.3 ちょうどにならず、わずかな誤差が出ることがあります。コンピューターが小数を2進数で扱う都合によるもので、PHPに限らず多くの言語で起こります。金額の計算など厳密さが必要な場面では注意してください。


4. 真偽値型(bool)

bool は、true(真)か false(偽)の2つの値だけを持つ型です。小文字で書くのが慣習です。

<?php
$isActive = true;

var_dump(3 > 1);     // bool(true)
var_dump(10 == 5);   // bool(false)

👉 比較演算子(><==!= など)の結果は bool になります。if文の条件では、この bool の値によって処理が分かれます。


5. 型を調べる:var_dump() / gettype()

値や変数の型を調べるには var_dump() を使います。型と値の両方を表示してくれるので、「思ったとおりの型になっていない」ときの原因調査に役立ちます。

<?php
var_dump("太郎");   // string(6) "太郎"
var_dump(20);       // int(20)
var_dump(3.14);     // float(3.14)
var_dump(true);     // bool(true)
var_dump("100");    // string(3) "100"   ← クォートで囲むと文字列

echo gettype(20);     // integer
echo gettype(3.14);   // double

💡 gettype() が返す名前は、int が integer、float が double、bool が boolean と、昔ながらの呼び方になっています。値だけをざっと確認したいときは var_dump() を使えば十分です。


6. 型変換(キャスト):(int) / (string) / (float)

ある型の値を別の型に変換することを型変換(キャスト)と呼びます。変換したい型を ( ) で囲んで値の前に書きます。

<?php
$price = "500";
echo (int)$price + 100;   // 600(文字列を整数にしてから計算)

$count = 3;
echo "残り " . (string)$count . " 個";   // 残り 3 個

echo (float)"1.5" * 2;   // 3

👉 PHPは、数値として解釈できない文字列を (int) してもエラーにならず、0 や途中までの数値になります。意図しない値になりやすいので、フォーム入力などは is_numeric() で事前に確認すると安全です。

<?php
var_dump((int)"abc");         // int(0)
var_dump((int)"12個");        // int(12)
var_dump(is_numeric("500"));  // bool(true)
var_dump(is_numeric("abc"));  // bool(false)

7. フォームから受け取った値は文字列

フォームから送られてくる値($_POST$_GET)は、数字を入力しても文字列(string)として届きます

<?php
$age = $_POST["age"] ?? "";   // 例: "20"(文字列)

echo $age + 1;        // 21(PHPは "20" を自動で数値に変換する)
echo (int)$age + 1;   // 21(明示的に変換しておくとより安全)

👉 PHPは "20" + 1 のような計算を自動で数値に変換してくれます(Pythonなどとは異なる点です)。ただし "20円" のように数字以外が混ざっていると、PHP 8では警告が出て意図しない結果になります。

💡 送信されていないキーをそのまま参照すると警告が出るため、$_POST["age"] ?? "" のように「なければ空文字」を用意しておきます。受け取った値は (int) などで明示的に変換・検証してから使うのが基本です。


8. == と === の違い(ゆるい比較・厳密な比較)

PHPには「等しいか」を調べる演算子が2種類あります。

  • ==(ゆるい比較):型が違っても自動で変換してから値を比べる
  • ===(厳密な比較):型も値も一致していないと false
<?php
var_dump(1 == "1");     // bool(true)   値だけ見ると等しい
var_dump(1 === "1");    // bool(false)  int と string で型が違う

var_dump("0" == false); // bool(true)   ゆるい比較は直感に反することがある
var_dump("0" === false);// bool(false)

👉 予期しない一致を避けるため、基本は === を使うのがおすすめです。なお、ゆるい比較の細かい挙動はPHP 8で一部変更されているため、古い記事の結果と違って見えることがあります。


9. データ型 早見表

gettype()の表示主な用途
文字列string"太郎"、'PHP'文字・テキスト
整数integer10、-3、0個数・回数
小数double3.14、0.5割合・金額
真偽値booleantrue、false条件判定
配列array[1, 2, 3]複数の値(別記事で解説)
nullNULLnull値がないことを表す

10. まとめ

  • 主な型は string・int・float・bool の4つ(ほかに array・null)
  • 型は var_dump()gettype() で調べられる
  • 変換は (int)(string)(float)。PHPは (int)"abc" でもエラーにならず 0 になる点に注意
  • フォームの値($_POST / $_GET)は文字列。PHPは自動で数値化するが、(int) で明示的に変換すると安全
  • 比較は基本 ===(型の一致まで確認)を使う

👉 「フォームの値は文字列」「比較は ===」の2つを意識するだけで、PHP初心者がよく出会うトラブルの多くを避けられます。実際に var_dump() で型を確認しながら、小さなコードを書いて慣れていきましょう。

-PHP
-, , ,