PHPで開発を始めたばかりの人が最初につまずくポイントのひとつが「データ型」です。
こんな経験はありませんか?
- 「数字だと思ったら文字列として扱われた?」
- 「trueと”true”の違いって何?」
- 「計算結果がおかしくなる…」
型の扱いを正しく理解しないまま進めると、思わぬバグやエラーに悩まされることになります。
この記事では、PHPの主要なデータ型を分かりやすく解説し、実際のコード例とともに「どう使うべきか」「どんな落とし穴があるか」を丁寧に紹介していきます。
PHPの基本的なデータ型とは?

PHPでは、主に以下の種類のデータ型が使われます。
基本データ型(ひとつの値を表す)
データ型 | 何を表す? | 例 | よく使う場面 |
---|---|---|---|
整数(int) | 小数点を含まない数値 | 42 , -10 , 0 | 年齢、個数、ID番号 |
浮動小数点数(float) | 小数点を含む数値 | 3.14 , 0.5 , -2.7 | 価格、重さ、割合 |
文字列(string) | 文字の並び | "Hello" , 'PHP' | 名前、メッセージ、説明文 |
論理型(bool) | はい/いいえ | true , false | フラグ、条件判定 |
まとめて扱うデータ型
データ型 | 何を表す? | 例 | よく使う場面 |
---|---|---|---|
配列(array) | 複数の値をひとまとめ | [1, 2, 3] , ["apple", "banana"] | リスト、メニュー、複数の選択肢 |
オブジェクト(object) | 関連する情報と機能をまとめたもの | $user = new User(); | ユーザー情報、商品情報 |
特殊な型
- NULL:値が存在しない状態を表す
- リソース(resource):ファイルやデータベース接続などの外部リソース
実際の使用例
// 基本データ型の例
$age = 25; // 整数
$height = 170.5; // 浮動小数点数
$name = "田中太郎"; // 文字列
$isActive = true; // 論理型
// 配列の例
$fruits = ["りんご", "バナナ", "オレンジ"];
$scores = [80, 95, 76, 88];
PHPの型変換と落とし穴
PHPは動的型付け言語と呼ばれ、変数の型を事前に決めなくても動作します。
これは便利な反面、意図しない型変換が起こる原因にもなります。
自動で型が変わる例
// 文字列と数値を足し算すると...
$result = "10" + 5; // 結果:15(文字列"10"が数値に自動変換される)
// でも、文字列同士をつなげると...
$text = "10" . "5"; // 結果:"105"(文字列として連結される)
手動で型を変える方法
// 明示的に型を変換する
$number = (int)"42.8"; // 結果:42(整数に変換、小数部分は切り捨て)
$text = (string)123; // 結果:"123"(文字列に変換)
$flag = (bool)"hello"; // 結果:true(空でない文字列はtrueになる)
注意!よくある間違い
// この文字列は「true」として扱われます!
if ("false") {
echo "これは実行されます"; // 実行される!
}
// 空の文字列なら「false」として扱われます
if ("") {
echo "これは実行されません"; // 実行されない
}
ポイント:"false"
(文字列)は空でないため、PHPではtrue
と判定されます。
型変換のルール覚え方
元の値 | boolに変換すると |
---|---|
0 , "" , [] , null | false になる |
それ以外 | true になる |
PHP 7以降の型宣言と厳密な型チェック

PHP 7以降では、型宣言を使って関数の引数や戻り値の型を指定できるようになりました。
これにより、より安全なコードを書くことが可能になります。
引数の型を指定する
// 引数は必ず文字列で、戻り値はなし
function greet(string $name): void {
echo "こんにちは、{$name}さん!";
}
// 使用例
greet("田中"); // OK
greet(123); // エラー(数値は受け取れない)
戻り値の型を指定する
// 引数は整数、戻り値も整数
function add(int $a, int $b): int {
return $a + $b;
}
// 使用例
$result = add(10, 20); // OK:30が返される
厳密な型チェックを有効にする
// ファイルの先頭に書く
declare(strict_types=1);
function multiply(int $a, int $b): int {
return $a * $b;
}
// strict_typesが有効だと...
multiply(10, 20); // OK
multiply("10", 20); // エラー(自動変換されない)
メリット:
- バグを早期発見できる
- コードの意図が明確になる
- チーム開発で型の食い違いを防げる
知っておくと便利なデータ型操作関数
PHPでは、データ型に関連する便利な関数がたくさん用意されています。
型を調べる関数
関数名 | 何をする? | 使用例 |
---|---|---|
gettype($var) | 変数の型を文字列で返す | gettype(123) → "integer" |
var_dump($var) | 変数の型と値を詳しく表示 | デバッグに便利 |
特定の型かどうか確認する関数
関数名 | 何をチェック? | 使用例 |
---|---|---|
is_int($var) | 整数かどうか | is_int(123) → true |
is_string($var) | 文字列かどうか | is_string("hello") → true |
is_bool($var) | 論理型かどうか | is_bool(true) → true |
is_array($var) | 配列かどうか | is_array([1,2,3]) → true |
is_null($var) | NULLかどうか | is_null(null) → true |
実用的な使い方
function processData($input) {
// 入力値の型をチェックしてから処理
if (is_string($input)) {
echo "文字列として処理: " . $input;
} elseif (is_int($input)) {
echo "数値として処理: " . ($input * 2);
} else {
echo "対応していない型です";
}
}
// テスト
processData("hello"); // 文字列として処理
processData(42); // 数値として処理: 84
processData(true); // 対応していない型です
型を強制的に変える関数
$value = "123";
settype($value, "integer"); // $valueが整数123に変わる
echo gettype($value); // "integer"
まとめ:型を理解することはPHPの第一歩!
重要なポイント
- PHPには基本型・配列・オブジェクト・特殊型がある
- 自動型変換は便利だが、予期しない動作の原因にもなる
- PHP 7以降は型宣言で安全なコードが書ける
gettype()
やis_int()
などの関数を活用しよう
学習の順番
- 基本的な型を覚える:int, string, bool, arrayから
- 型変換の仕組みを理解する:自動変換と手動変換
- 型チェック関数を使ってみる:is_int(), is_string()など
- 型宣言を使ってみる:function(string $name): void
実際の開発で気をつけること
- 型を意識してコードを書く
- 予期しない型変換に注意する
- 型チェック関数でエラーを防ぐ
- 型宣言を積極的に使う
PHPを学ぶうえでデータ型は基本中の基本です。
型を理解して扱えるようになることで、読みやすく・壊れにくいコードが書けるようになります。
コメント