はじめに
この記事で分かること:
- PHPの基本構文から関数まで、1日で学べる実用的な知識
- 実際に動かせるサンプルコード付きの解説
- 初心者が躓きやすいポイントとその対策
想定読者: 他言語経験ありのエンジニア・PHP学習を始めたい方
所要時間: 5分で読める
背景・きっかけ
エンジニアとして働いている私ですが、これまでPHPに触れる機会がありませんでした。
「PHPの基本構文は他の言語とどう違うの?」「1日でどのレベルまで習得できるの?」
そんな疑問を持つ方のために、1日の学習記録をまとめました。
他の言語経験がある中でのPHP特有の書き方や、
「これは他の言語より便利!」と感じた部分も含めて、
実践的な学習体験をお伝えします。
1. Hello World - PHPの第一歩
基本的な書き方
<?php
echo "Hello, PHP World!\n";
echo "PHP Version: " . phpversion() . "\n";
echo "今日からPHP学習開始!\n";
?>
学んだポイント:
- PHPコードは
<?php
で始まり?>
で終わる -
echo
で文字列を出力 - 文字列の連結は
.
(ドット)を使用 -
\n
で改行
初心者Tips
- 最初は
?>
を忘れがち → IDE(VSCode等)を使うと自動補完してくれる - エラーが出たら、まず構文エラーをチェック
2. 変数とデータ型の理解
基本的な変数の使い方
<?php
// 変数は $ マークから始める
$name = "太郎"; // 文字列 (string)
$age = 25; // 整数 (integer)
$height = 175.5; // 浮動小数点数 (float)
$isStudent = true; // 真偽値 (boolean)
$hobby = null; // null値
// 変数の中身を表示
echo "名前: " . $name . "\n";
echo "年齢: " . $age . "歳\n";
echo "身長: " . $height . "cm\n";
// データ型を確認
echo "\$name の型: " . gettype($name) . "\n";
?>
重要な発見:
- PHPは動的型付け言語 → 型を明示的に宣言する必要がない
-
gettype()
関数でデータ型を確認できる - 変数名は必ず
$
から始まる
躓きポイント
-
$
を忘れがち → エラーの原因No.1 - 文字列と数値の混在 → PHPは自動的に型変換してくれる(便利!)
3. 配列操作をマスター
インデックス配列
<?php
$fruits = ["apple", "banana", "orange", "grape"];
// 配列の要素にアクセス
echo "最初の果物: " . $fruits[0] . "\n";
echo "果物の種類数: " . count($fruits) . "\n";
// 全要素を表示
foreach ($fruits as $fruit) {
echo "- " . $fruit . "\n";
}
// 要素を追加
$fruits[] = "mango"; // 末尾に追加
array_push($fruits, "kiwi"); // 関数を使って追加
?>
連想配列(重要!)
<?php
$user = [
"id" => 1,
"name" => "田中太郎",
"email" => "tanaka@example.com",
"role" => "student"
];
echo "ユーザー名: " . $user["name"] . "\n";
echo "メール: " . $user["email"] . "\n";
?>
学習のポイント:
- 配列のインデックスは0から始まる
- 連想配列は実際の開発でよく使う → データベースから取得したデータの構造に似ている
-
foreach
は配列操作の基本
4. 関数で処理を再利用
基本的な関数
<?php
// 挨拶する関数
function greet($name) {
return "こんにちは、" . $name . "さん!";
}
// 関数の呼び出し
echo greet("shion") . "\n";
echo greet("田中太郎") . "\n";
// 計算を行う関数
function add($a, $b) {
return $a + $b;
}
echo "10 + 5 = " . add(10, 5) . "\n";
?>
関数作成のメリット:
- コードの再利用性が高まる
- 複雑な処理を分割して管理できる
- デバッグが楽になる
実践的な応用例
<?php
// ユーザー情報を検索する関数
function findUserById($users, $id) {
foreach ($users as $user) {
if ($user["id"] == $id) {
return $user;
}
}
return null;
}
// 成績の平均を計算する関数
function calculateAverage($grades) {
$total = 0;
foreach ($grades as $grade) {
$total += $grade["score"];
}
return $total / count($grades);
}
?>
5. 文字列操作のテクニック
基本的な文字列操作
<?php
$text = "Hello, PHP World!";
echo "文字列の長さ: " . strlen($text) . "\n";
echo "大文字に変換: " . strtoupper($text) . "\n";
echo "小文字に変換: " . strtolower($text) . "\n";
// 文字列の分割
$fruits = "apple,banana,orange";
$fruitArray = explode(",", $fruits);
print_r($fruitArray);
?>
便利だった機能:
-
explode()
で文字列を配列に分割 -
implode()
で配列を文字列に結合 - CSVデータの処理等に応用できそう
6. 条件分岐とループ処理
if文とforeach文の組み合わせ
<?php
$scores = [95, 88, 76, 82, 94];
foreach ($scores as $index => $score) {
if ($score >= 90) {
echo "科目" . ($index + 1) . ": " . $score . "点 (優秀!)\n";
} elseif ($score >= 80) {
echo "科目" . ($index + 1) . ": " . $score . "点 (良好)\n";
} else {
echo "科目" . ($index + 1) . ": " . $score . "点 (要努力)\n";
}
}
?>
7. スコープの理解
グローバル変数とローカル変数
<?php
$globalVar = "グローバル変数";
function testScope() {
$localVar = "ローカル変数";
global $globalVar; // グローバル変数にアクセス
echo $globalVar . "\n";
echo $localVar . "\n";
}
testScope();
// echo $localVar; // エラー!関数外からアクセス不可
?>
重要な概念:
- 関数内で定義した変数は関数外から参照できない
-
global
キーワードでグローバル変数にアクセス可能 - 変数のスコープを理解することでバグを防げる
8. 総合システムの構築
1日の学習の集大成として、複数の管理システムを作成しました。
🏗️ 構築したシステム一覧
1. 包括的データ管理システム(comprehensive_system.php)
- ユーザー管理・タスク管理・成績管理の統合
- 多次元配列でのデータ構造設計
- レポート生成機能
2. 分析システム(analytics_system.php)
- ユーザー生産性統計
- 科目別パフォーマンス分析
- CSVバックアップ機能
<?php
// 生産性統計の例
function getUserProductivityStats($tasks, $userId) {
$userTasks = getTasksByUserId($tasks, $userId);
$stats = [
"total_tasks" => count($userTasks),
"completed" => 0,
"completion_rate" => 0
];
foreach ($userTasks as $task) {
if ($task["status"] == "completed") {
$stats["completed"]++;
}
}
if ($stats["total_tasks"] > 0) {
$stats["completion_rate"] = ($stats["completed"] / $stats["total_tasks"]) * 100;
}
return $stats;
}
?>
3. 検索システム(search_system.php)
- キーワードベースのユーザー検索
- タスクの優先度フィルタリング
- 期限切れタスクの抽出
4. 高機能計算機(calculator.php)
- 基本四則演算 + 高度な計算(べき乗、複利計算)
- 計算履歴管理
- 実用計算(BMI、消費税、円の面積)
5. 成績管理システム(grade_system.php)
- 科目別成績管理
- クラス平均の自動計算
- 成績ランキング機能
6. ショッピングリスト管理(shopping_list.php)
- カテゴリ別商品管理
- 商品検索機能
- 動的なリスト追加機能
技術的な学習ポイント
データ構造の設計:
// 階層的なデータ構造
$shoppingList = [
"野菜" => ["トマト", "きゅうり", "レタス"],
"肉類" => ["鶏肉", "豚肉", "牛肉"],
"調味料" => ["醤油", "味噌", "塩"]
];
関数の活用:
// 検索・フィルタリング関数
function filterTasksByPriority($tasks, $priority) {
$results = [];
foreach ($tasks as $task) {
if ($task["priority"] == $priority) {
$results[] = $task;
}
}
return $results;
}
エラーハンドリング:
function divide($a, $b) {
if ($b == 0) {
return "エラー: 0で割ることはできません";
}
return $a / $b;
}
まとめ
1日で学習した重要ポイント
- 変数とデータ型: PHPの基本構文を理解
- 配列操作: インデックス配列と連想配列の使い分け
- 関数作成: 処理の再利用とコードの整理
次のアクション提案
- Laravel学習の準備: フレームワークへのステップアップ
- データベース連携: MySQL等との組み合わせ
- Webアプリケーション開発: 実際のプロジェクト作成
おすすめ学習リソース
おわりに
他言語の経験がある中で、1日でここまでPHPの特徴を理解することができました。
最初は「なぜ$マークが必要?」「配列の書き方が独特」と感じましたが、
実際に書いてみると、PHPの柔軟性と実用性を体感できました。
学習のコツ:
- エラーを恐れずにとりあえず書いてみる
- 一つずつ確実に理解してから次に進む
- 実際に動くものを作って達成感を得る
これからPHPを学ぶ方の参考になれば嬉しいです!
質問やフィードバックがあれば、お気軽にコメントください。
次回予告: Laravel入門編をお届け予定です 🔥