【初心者必見】PHPのデータ型を徹底解説|知らなきゃ損する型の基礎と実践ポイント

PHP

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, "", [], nullfalseになる
それ以外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()などの関数を活用しよう

学習の順番

  1. 基本的な型を覚える:int, string, bool, arrayから
  2. 型変換の仕組みを理解する:自動変換と手動変換
  3. 型チェック関数を使ってみる:is_int(), is_string()など
  4. 型宣言を使ってみる:function(string $name): void

実際の開発で気をつけること

  • 型を意識してコードを書く
  • 予期しない型変換に注意する
  • 型チェック関数でエラーを防ぐ
  • 型宣言を積極的に使う

PHPを学ぶうえでデータ型は基本中の基本です。

型を理解して扱えるようになることで、読みやすく・壊れにくいコードが書けるようになります。

コメント

タイトルとURLをコピーしました