実コードで学ぶPHPの読み方|変数・配列・$_POST・関数を理解する


PHPコードが読めるとは、ネットや既存ファイルにあるPHPのコードを見て、「どの部分が何をしているか」を自分の言葉で説明できる状態のことです。読む力の土台は、変数($name)・配列($_POST)・関数(function)・制御構文(ifforeach)という、たった数種類のパーツの役割を知ることです。

「サンプルコードをコピペすれば動くけれど、中身は分からない」——PHPでよくある状態です。動いているうちは問題なくても、エラーが出たときや、コードを少し変えたいとき、読めないと一気に手が止まります。逆に、基本のパーツさえ読めれば、たいていのPHPコードは「何をしているか」が追えるようになります。

この記事は、PHPのコードを読むための入門ガイドです。変数・配列・関数・制御構文・スーパーグローバル・データベース処理の読み方を、実際のサンプルで一つずつ確認します。後半では、当サイトのログイン・データベース・検索・ページネーションの実装記事のコードを「読む教材」として使い、学んだ読み方を実コードで試します。コピペで終わらせず、「読める」状態を目指しましょう。


PHPコードが読めると何が変わるか

コードが読めると、3つの場面で差が出ます。①エラーが出たとき、どの行で何が起きているか見当がつく。②サンプルを自分の要件に合わせて変更できる。③セキュリティ上まずい書き方(パスワード平文保存など)に気づける。いずれも「コピペだけ」では届かない領域です。

読むために覚えるパーツは多くありません。本記事で扱うのは次の6つです。これだけで、実務で出会うPHPコードのかなりの部分が読めるようになります。

  • 変数:データに名前を付けて入れておく箱($name
  • 配列・連想配列:複数の値をまとめて持つ($_POSTもこれ)
  • 制御構文:条件分岐(if)と繰り返し(foreach
  • 関数:処理に名前を付けて呼び出す(function・組み込み関数)
  • スーパーグローバル:フォームやセッションの値($_POST$_GET$_SESSION
  • データベース処理:PDOでのデータの読み書き

PHPの基本の形(<?php・セミコロン・コメント)

まず、PHPコードの「見た目の約束ごと」です。PHPは<?phpで始まり、文の終わりに;(セミコロン)を付けます。//#の後ろ、/* */で囲んだ部分はコメントで、処理に影響しません。

<?php
// これはコメント(実行されない)
echo 'こんにちは';   // echo は「画面に出力する」命令
echo "<br>";         // 文の終わりには ; を付ける

/* 複数行の
   コメントはこう書く */

echoは「画面に表示する」命令で、PHPで最初に出会う頻出ワードです。コードを読むときは、まずechoを探すと「何を出力しているか」から流れがつかめます。文字列はクオート('")で囲みます。


変数と値の読み方($name)

$で始まるものは変数です。データに付けた名前で、中身を入れたり取り出したりできます。値には文字列・数値・真偽値(true/false)などの種類(型)があります。

<?php
$name    = 'コーヒー豆';  // 文字列(クオートで囲む)
$price   = 1200;          // 数値(クオートなし)
$inStock = true;          // 真偽値(true か false)

echo $name;                       // → コーヒー豆
echo $name . 'は' . $price . '円'; // . で文字列をつなぐ → コーヒー豆は1200円

読むときのコツは、=を「右の値を左の箱に入れる」と読むことです。$price = 1200;は「1200という数値を$priceに入れる」。そして.(ドット)は文字列の連結です。$name . '円'で「$nameの中身+円」という文字列になります。

PHPは記号が多い言語ですが、「読み方」さえ覚えれば構造が見えてきます。コードを読むときに迷いやすい記号を早見表にまとめました。手元に置いておくと、知らない記号で手が止まらなくなります。

記号読み方・意味
$変数(データを入れる箱)
=右の値を左に入れる(代入)
.文字列をつなぐ(連結)
=>連想配列の「キー => 値」
->オブジェクトの機能を呼ぶ
??左がなければ右を使う(未定義回避)
;文の終わり

配列と連想配列の読み方($_POSTの正体)

複数の値をまとめて持つのが配列です。番号で管理する配列と、名前(キー)で管理する連想配列があります。フォームの値が入る$_POSTは、この連想配列です。

<?php
// 配列(0から始まる番号で管理)
$fruits = ['りんご', 'みかん', 'ぶどう'];
echo $fruits[0]; // → りんご(番号は0から数える)

// 連想配列(キーで管理)← $_POST もこの形
$user = [
    'name'  => '田中',
    'email' => 'tanaka@example.com',
];
echo $user['name'];  // → 田中
echo $user['email']; // → tanaka@example.com

これが分かると、$_POST['email']の意味が読めます。「$_POSTという連想配列の、emailというキーの値」=送信フォームの<input name="email">に入力された値、です。$user['name']を見たら「$userのnameキーの値」と読む。この読み方は、あらゆるPHPコードで使います。


制御構文の読み方(if・foreach)

処理の流れを変えるのが制御構文です。読めるべきは2つ、条件分岐のifと、繰り返しのforeachです。

<?php
// if:条件によって処理を分ける
if ($price >= 1000) {
    echo '高い';
} elseif ($price >= 500) {
    echo '普通';
} else {
    echo '安い';
}
<?php
// foreach:配列の要素を1つずつ取り出して繰り返す
$items = ['りんご', 'みかん', 'ぶどう'];
foreach ($items as $item) {
    echo $item . '<br>'; // $item に1個ずつ入って繰り返される
}

if (条件) { ... }は「条件が成り立つなら{ }の中を実行する」。foreach ($配列 as $要素)は「配列から1個ずつ$要素に入れて、中の処理を繰り返す」と読みます。一覧表示のコードは、ほぼこのforeachでできています。


関数の読み方(引数・戻り値・組み込み関数)

関数は、処理に名前を付けてまとめ、呼び出して使う仕組みです。名前(...)の形を見たら関数だと判断できます。カッコの中に渡す値を引数returnで返ってくる値を戻り値と呼びます。

<?php
// function 関数名(引数) { 処理; return 戻り値; }
function taxIncluded(int $price): int {
    return (int)($price * 1.1); // 税込み価格を計算して返す
}

$result = taxIncluded(1000); // 1000を渡すと 1100 が返る
echo $result;                // → 1100

PHPには最初から使える組み込み関数も多数あります。コードを読むとき頻出するものを知っておくと、意味がすぐ取れます。

関数何をする
trim($s)文字列の前後の空白を取り除く
htmlspecialchars($s)HTMLタグを無害化(XSS対策)
count($arr)配列の要素数を数える
password_hash($p)パスワードを安全にハッシュ化する

知らない関数が出てきたら、関数名で公式マニュアルを引くのが確実です。PHP公式マニュアルは関数ごとに「引数」「戻り値」「使用例」が載っており、読む力をつけるうえで最良の辞書になります。


スーパーグローバルの読み方($_POST・$_GET・$_SESSION)

$_で始まる特別な変数をスーパーグローバルと呼びます。どこからでも使えるPHP標準の連想配列で、Webアプリのコードに頻出します。読み分けられると、データがどこから来てどこへ行くかが見えます。

変数中身(どこから来る値か)
$_POSTフォームをPOST送信した値(登録・ログイン等)
$_GETURLの?以降のパラメータ(検索・ページ番号等)
$_SESSIONサーバーに保存され、ページをまたいで保持される値(ログイン状態等)

たとえば$_GET['page']を見たら「URLの?page=の値」=ページネーションのページ番号だと読めます。$_SESSION['user_id']なら「ログイン中のユーザーID」。データの出どころが分かると、コード全体の流れが追いやすくなります。


データベースコードの読み方(PDO)

Webアプリで必ず出てくるのがデータベース処理です。PHPではPDOという仕組みでMySQLなどを操作します。次の3ステップの形を覚えると、データベースコードはほぼ読めます。

<?php
// ① SQLを準備する(:email は後で値を入れる「穴」)
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');

// ② 穴に値を入れて実行する
$stmt->execute([':email' => $email]);

// ③ 結果を受け取る(1件なら fetch、複数なら fetchAll)
$user = $stmt->fetch();

読み方はこうです。prepare()で「SQLの型」を用意し、:emailのようなプレースホルダ(値を入れる穴)を置く。execute()で穴に実際の値を入れて実行。fetch()で結果を取り出す。この「穴を用意して値を後から入れる」書き方は、SQLインジェクションを防ぐための安全策でもあります。->(アロー)は「そのオブジェクトの機能を呼ぶ」記号で、$stmt->execute()は「$stmtのexecuteを実行」と読みます。


差分チェックツールで効率UPお手本コードと自分のコードを比較して、違いを一目で確認できます。練習前にブックマークしておくと便利です。
Diff Checkerを開く →

実コードを読んでみる(実装記事で練習する)

ここまでの読み方を、実際の実装コードで試してみましょう。当サイトのバックエンド実装記事は、すべて本記事で扱ったパーツ(変数・配列・$_POST・関数・ifforeach・PDO)の組み合わせでできています。読む練習台として最適です。

まずPHPログイン機能の作り方は、$_POSTでフォームの値を受け取り、password_hash()ifで認証し、$_SESSIONにログイン状態を保存します。本記事の$_POST・関数・$_SESSIONがそのまま登場します。

次にPHPでMySQLを操作する方法(CRUD)は、PDOのprepareexecutefetchの3ステップがCRUD(登録・取得・更新・削除)の形で繰り返し出てきます。データベースコードの読み方を固めるのに向いています。

さらにPHP検索機能の作り方$_GETで検索語を受け取り、PHPページネーション$_GET['page']でページ番号を受け取ってforeachで一覧を表示します。$_GETforeachの実例として読んでみてください。

ローカルでPHPを動かす環境がまだない場合は、MAMP・XAMPPの導入方法で準備できます。バックエンド全体の地図はバックエンドとは何かで確認できます。


次の一手:読めたら、書いて動かす

コードは「読めた」だけでは身につきません。読めるようになったら、次は実際に書いて動かす段階です。おすすめは、上の実装記事のコードを写経(書き写し)して、自分の環境で動かしてみること。動かしながら、変数の中身をechoで表示して確認すると、理解が一気に深まります。

「このコードは何をしているか」を一行ずつ自分の言葉で説明できるようになれば、もうコピペ依存からは抜け出せています。そこまで来たら、実装記事を見ながら、自分の作りたい機能へとコードを変えていけるはずです。


よくある質問

Q. プログラミング未経験でもPHPのコードは読めるようになりますか?

はい。本記事で扱った変数・配列・関数・制御構文の6パーツは、どれも難しい概念ではありません。一度役割を覚えれば、実際のコードはこれらの組み合わせとして読めます。まずは小さなサンプルをechoで出力しながら追うのがおすすめです。

Q. $ や -> などの記号が多くて読めません。

記号は「読み方」を覚えれば怖くありません。$は変数、.は文字列の連結、=>は連想配列のキーと値、->はオブジェクトの機能呼び出しです。記号の意味を一つずつ確認すれば、コードの構造が見えてきます。

Q. コピペで動いているなら、読めなくても問題ないのでは?

動いている間は問題ありません。困るのは、エラーが出たとき・コードを変更したいとき・セキュリティ上の問題に気づきたいときです。読めると、これらに自分で対処できるようになります。特にログインやメール送信のような重要な処理では、読めることが安全につながります。

Q. PHPのバージョンによって読み方は変わりますか?

本記事で扱う基本のパーツ(変数・配列・関数・制御構文)は、バージョンが変わってもほぼ同じです。新しいバージョンで便利な書き方が増えることはありますが、基礎の読み方が土台になる点は変わりません。まずは基本を押さえれば十分です。

Q. 次に何を学べばよいですか?

読み方を身につけたら、実際に手を動かすのが近道です。当サイトのログイン・データベース操作・検索・ページネーションの実装記事は、本記事のパーツで構成されているので、写経して動かす教材として使えます。読んで、書いて、動かす——この順で進めると定着します。


まとめ

PHPのコードを読む力は、変数・配列・制御構文・関数・スーパーグローバル・データベース処理という数種類のパーツの役割を知ることから始まります。$_POST['email']を「$_POSTのemailキーの値」と読め、prepare→execute→fetchの流れが追えれば、実務で出会うPHPコードのかなりの部分が「何をしているか」分かるようになります。

読み方を確認したら、当サイトの実装記事のコードを教材に、実際に読んで・書いて・動かしてみてください。コピペで終わらせず「読める」状態になれば、PHPでできることが大きく広がります。

PHPを使ったWebアプリの実装や、既存コードの改修・レビューを相談したい場合は、Web制作・開発を手がけるRINIAにお問い合わせください。

【P10倍】&【30,000円クーポン】【国内生… 【P10倍】&【30,000円クーポン】【国内生… ¥149,800 【P10倍】&【30,000円クーポン】【国内生… 【P10倍】&【30,000円クーポン】【国内生… ¥139,800 【ふるさと納税】液晶モニター31.5型ワイ… 【ふるさと納税】液晶モニター31.5型ワイ… ¥135,000 \数量限定★モニター台プレゼント~5/31迄… \数量限定★モニター台プレゼント~5/31迄… ¥14,800 【楽天1位受賞】 マウス ワイヤレスマウス… 【楽天1位受賞】 マウス ワイヤレスマウス… ¥1,380 【SALE】 ロジクール ワイヤレスマウス M2… 【SALE】 ロジクール ワイヤレスマウス M2… ¥1,420
Rakuten Web Service Center