「PHPの変数ってどうやって作るの?」
「他の言語と何が違うの?」
「エラーが出る理由がわからない…」
PHPを学び始める人にとって、変数の使い方は最初に覚える大切な基礎です。
PHPの変数には独特なルールがあります。しかし、一度覚えてしまえばとても使いやすく、Webサイト作りに欠かせない道具になります。
この記事でわかること
- PHPの変数の基本的な作り方
- データの種類(データ型)について
- 変数が使える範囲(スコープ)
- 文字列との組み合わせ方
- よくあるエラーと解決方法
- 実際のWebサイトでの使用例
PHP変数の基本的な作り方

変数の書き方
PHPの変数には、必ずドルマーク($)をつけます。これがPHPの特徴です。
基本の形:
<?php
$変数名 = 値;
?>
具体例:
<?php
$name = "山田太郎";
$age = 25;
$height = 170.5;
$isStudent = true;
?>
変数名のルール
OK な変数名:
$name // 英字
$user_name // アンダースコア
$userName // キャメルケース
$age2 // 数字を含む(最初以外)
$_private // アンダースコアで開始
NG な変数名:
$2name // 数字で開始 (NG)
$user-name // ハイフン (NG)
$user name // 空白 (NG)
name // $がない (NG)
変数の初期化(値を入れること)
PHPでは、変数を作ると同時に値を入れます。
<?php
// 正しい方法
$message = "こんにちは";
echo $message; // こんにちは
// 値を変更することも可能
$message = "さようなら";
echo $message; // さようなら
?>
<?php
echo $undefined_variable; // Warning: Undefined variable
?>
PHPで使えるデータの種類

主なデータ型
PHPは動的型付け言語です。変数の型を指定する必要がありません。
データ型 | 説明 | 例 |
---|---|---|
文字列(string) | 文字や文章 | $name = "太郎"; |
整数(int) | 小数点のない数 | $age = 20; |
浮動小数点(float) | 小数点のある数 | $price = 199.99; |
真偽値(bool) | trueまたはfalse | $flag = true; |
配列(array) | 複数の値 | $colors = ["red", "blue"]; |
NULL | 値がない状態 | $empty = null; |
文字列の書き方
ダブルクォーテーション(”)の場合:
<?php
$name = "太郎";
echo "こんにちは、$name さん"; // こんにちは、太郎さん
?>
シングルクォーテーション(’)の場合:
<?php
$name = "太郎";
echo 'こんにちは、$name さん'; // こんにちは、$name さん(変数が展開されない)
?>
使い分け:
- 変数を文字列に含めたい → ダブルクォーテーション
- 単純な文字列 → シングルクォーテーション(高速)
配列の使い方
通常の配列:
<?php
$fruits = ["りんご", "みかん", "ばなな"];
echo $fruits[0]; // りんご
echo $fruits[1]; // みかん
?>
連想配列(キーと値のペア):
<?php
$user = [
"name" => "太郎",
"age" => 25,
"city" => "東京"
];
echo $user["name"]; // 太郎
echo $user["age"]; // 25
?>
型を確認する方法
<?php
$name = "太郎";
$age = 25;
// 型を調べる
var_dump($name); // string(6) "太郎"
var_dump($age); // int(25)
// 型をチェックする
if (is_string($name)) {
echo "文字列です";
}
if (is_int($age)) {
echo "整数です";
}
?>
変数の有効範囲(スコープ)

ローカル変数
関数の中で作った変数は、その関数の中でしか使えません。
<?php
function greet() {
$message = "こんにちは"; // ローカル変数
echo $message;
}
greet(); // こんにちは
// echo $message; // エラー:関数外では使えない
?>
グローバル変数
関数の外で作った変数を、関数の中で使うときはglobal
キーワードが必要です。
<?php
$siteName = "私のWebサイト"; // グローバル変数
function showHeader() {
global $siteName; // globalキーワードが必要
echo "<h1>$siteName</h1>";
}
showHeader(); // <h1>私のWebサイト</h1>
?>
スーパーグローバル変数
どこからでも使える特別な変数があります。
<?php
// フォームから送信されたデータ
echo $_POST['username'];
// URLのパラメータ
echo $_GET['page'];
// セッション(ログイン状態など)
session_start();
$_SESSION['user_id'] = 123;
// サーバー情報
echo $_SERVER['HTTP_HOST']; // ドメイン名
?>
主なスーパーグローバル変数:
$_POST
: フォームデータ$_GET
: URLパラメータ$_SESSION
: セッションデータ$_COOKIE
: クッキーデータ$_SERVER
: サーバー情報$_FILES
: アップロードファイル
文字列と変数を組み合わせる方法

ドット(.)で結合
<?php
$firstName = "山田";
$lastName = "太郎";
// ドットで結合
$fullName = $firstName . " " . $lastName;
echo $fullName; // 山田 太郎
// 直接出力
echo "こんにちは、" . $fullName . "さん";
?>
ダブルクォーテーション内に埋め込み
<?php
$name = "太郎";
$age = 25;
// 変数を直接埋め込み
echo "私の名前は$nameで、年齢は$ageです";
// 中括弧で明確に区切る(推奨)
echo "私の名前は{$name}で、年齢は{$age}です";
?>
HTMLとの組み合わせ
<?php
$title = "私のWebサイト";
$userName = "太郎";
?>
<!DOCTYPE html>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1>ようこそ、<?php echo $userName; ?>さん</h1>
</body>
</html>
実際のWebサイトでの使用例
ユーザー情報の表示
<?php
// データベースから取得したと仮定
$user = [
"id" => 1,
"name" => "山田太郎",
"email" => "yamada@example.com",
"joined" => "2023-01-15"
];
?>
<div class="user-profile">
<h2>ユーザープロフィール</h2>
<p>名前: <?php echo $user['name']; ?></p>
<p>メール: <?php echo $user['email']; ?></p>
<p>登録日: <?php echo $user['joined']; ?></p>
</div>
フォームの処理
<?php
$message = "";
if ($_POST) {
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';
if (!empty($name) && !empty($email)) {
$message = "こんにちは、{$name}さん!";
} else {
$message = "名前とメールアドレスを入力してください。";
}
}
?>
<form method="post">
<input type="text" name="name" placeholder="名前">
<input type="email" name="email" placeholder="メールアドレス">
<button type="submit">送信</button>
</form>
<?php if ($message): ?>
<p><?php echo $message; ?></p>
<?php endif; ?>
条件分岐での活用
<?php
$hour = date('H'); // 現在の時刻(24時間形式)
$greeting = "";
if ($hour < 12) {
$greeting = "おはようございます";
} elseif ($hour < 18) {
$greeting = "こんにちは";
} else {
$greeting = "こんばんは";
}
$userName = "太郎";
?>
<h1><?php echo $greeting; ?>、<?php echo $userName; ?>さん</h1>
よくあるエラーと解決方法

変数が定義されていないエラー
エラー例:
echo $undefinedVariable; // Warning: Undefined variable
解決方法:
<?php
// 方法1: isset()でチェック
if (isset($variable)) {
echo $variable;
}
// 方法2: null合体演算子を使用
$name = $userName ?? 'ゲスト';
echo $name;
// 方法3: 事前に初期化
$counter = 0;
$counter++;
?>
文字列の中で変数が展開されない
問題:
$name = "太郎";
echo 'こんにちは、$nameさん'; // こんにちは、$nameさん
解決方法:
$name = "太郎";
echo "こんにちは、{$name}さん"; // こんにちは、太郎さん
配列の存在しないキーにアクセス
エラー例:
$user = ["name" => "太郎"];
echo $user["age"]; // Warning: Undefined array key
解決方法:
<?php
$user = ["name" => "太郎"];
// 方法1: array_key_exists()でチェック
if (array_key_exists('age', $user)) {
echo $user['age'];
} else {
echo '年齢は未設定です';
}
// 方法2: null合体演算子を使用
$age = $user['age'] ?? '未設定';
echo $age;
?>
グローバル変数の取得忘れ
問題:
<?php
$siteName = "私のサイト";
function showTitle() {
echo $siteName; // 何も表示されない
}
?>
解決方法:
<?php
$siteName = "私のサイト";
function showTitle() {
global $siteName; // globalキーワードを追加
echo $siteName;
}
// または引数で渡す(推奨)
function showTitle($title) {
echo $title;
}
showTitle($siteName);
?>
セキュリティを考慮した変数の使い方
ユーザー入力のサニタイズ
<?php
// ユーザーからの入力を安全に処理
$userInput = $_POST['comment'] ?? '';
// HTMLエスケープ
$safeInput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
echo $safeInput;
// より厳密なフィルタリング
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
if ($email === false) {
echo "有効なメールアドレスを入力してください";
}
?>
SQLインジェクション対策
<?php
// 危険な例(絶対にしない)
$userId = $_GET['id'];
$sql = "SELECT * FROM users WHERE id = $userId"; // NG
// 安全な例(プリペアドステートメント)
$userId = $_GET['id'];
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$userId]); // OK
?>
デバッグに便利な変数表示方法

変数の中身を確認
<?php
$data = [
"name" => "太郎",
"hobbies" => ["読書", "映画", "プログラミング"]
];
// 詳細な情報を表示
var_dump($data);
// 読みやすい形式で表示
print_r($data);
// JSONとして表示
echo json_encode($data, JSON_UNESCAPED_UNICODE);
?>
デバッグ用の関数
<?php
function debug($variable, $name = '') {
echo "<pre>";
echo $name ? "$name: " : '';
print_r($variable);
echo "</pre>";
}
$users = ["太郎", "花子", "次郎"];
debug($users, 'ユーザー一覧');
?>
まとめ
PHPの変数は、ドルマーク($)から始まる柔軟で使いやすい仕組みです。
この記事のポイント:
- 変数は
$変数名 = 値;
の形で作る - 動的型付けで型を意識せずに使える
- スコープに注意してグローバル変数を扱う
- 文字列結合はドット(.)や埋め込みで行う
- エラー対策として事前チェックを心がける
- セキュリティを考慮してユーザー入力を処理する
実践のコツ:
- 変数名は意味のわかる名前にする
- 未定義変数のチェックを習慣にする
- ユーザー入力は必ずサニタイズする
- デバッグツールを活用する
コメント