目次
1. 本記事のポイント
- PHPにおける基本的な変数の扱い方を正確に理解できる
- スカラ型・配列・オブジェクトなどの主要なデータ型を一覧で整理
- 実務上の型変換や動的型付けの注意点にも触れる
2. PHPの変数とデータ型とは?
PHPは動的型付け言語であり、変数の宣言時に明示的な型指定は不要です。
すべての変数は$
で始まり、代入と同時に型が決まります(代入型推論)。
PHPの変数は、値の種類に応じて以下のようなデータ型に分類されます:
- スカラ型(int, float, string, bool)
- 配列(array)
- オブジェクト(object)
- リソース(resource)
- NULL(null)
これらの型は、関数の返り値や条件分岐、配列のキー・値操作など、日常的なコーディングに密接に関わります。
特にPHP 7以降は型宣言のサポートが強化され、実務でも型安全性の考慮が必要になっています。
3. 詳細解説
基本的な変数の宣言とスカラ型
以下は、基本的なスカラ型(int, float, string, bool)の例です。
PHP
<?php
// 整数型
$intVar = 10;
echo gettype($intVar); // int
// 浮動小数点型
$floatVar = 3.14;
echo gettype($floatVar); // double
// 文字列型
$stringVar = "Hello";
echo gettype($stringVar); // string
// ブール型
$boolVar = true;
echo gettype($boolVar); // boolean
?>
配列の宣言とアクセス
配列は複数の値をまとめて管理するのに使われます。
PHP
<?php
// インデックス配列
$array = ["apple", "banana", "cherry"];
echo $array[1]; // banana
// 連想配列
$assoc = ["name" => "Taro", "age" => 20];
echo $assoc["name"]; // Taro
?>
オブジェクトの定義と利用
クラスとオブジェクトの扱いは、オブジェクト指向プログラミングの基本です。
PHP
<?php
class User {
public $name;
function __construct($name) {
$this->name = $name;
}
}
$user = new User("Hanako");
echo $user->name; // Hanako
?>
型変換(キャスト)と型の自動変換
PHPでは明示的なキャストと暗黙的な型変換の両方が存在します。
PHP
<?php
$val = "123";
$intVal = (int)$val;
echo $intVal; // 123
$sum = "10" + 5; // 文字列が自動で数値に変換される
var_dump($sum); // int(15)
?>
型の比較における注意点
PHPでは==
と===
の違いに注意が必要です。
PHP
<?php
var_dump(0 == "0"); // bool(true)
var_dump(0 === "0"); // bool(false) 型も比較される
?>
4. よくあるミス・誤解・落とし穴
- 型比較における誤解:
==
は型を変換して比較するため、意図しない一致が起きることがある。 - NULLや未定義変数の扱い:未定義変数にアクセスするとNoticeレベルの警告が出る。
- gettype()では不十分なこともある:オブジェクトのクラス名取得には
get_class()
を使う必要がある。 - 浮動小数点の比較誤差:PHPに限らず、floatの比較には
abs($a - $b) < 0.0001
のような誤差許容が必要な場合がある。
5. まとめ
PHPの変数とデータ型は、動的で柔軟な設計を特徴とします。
スカラ型、配列、オブジェクトの基本を押さえ、暗黙の型変換や比較演算の注意点を理解することが重要です。
また、PHP 7以降の型宣言機能も活用することで、より安全で明確なコードを書くことが可能になります。