ch02 8章中 2章目

ch02 — 添字でアクセス

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch02 — 添字でアクセス」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch02 — 添字でアクセス」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch02 — 添字でアクセス」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

配列を作ったら、次は 中の値を 1 つだけ取り出す 操作が必要になる。「2 番目の生徒の点数を出したい」「最初の要素だけ別の処理に渡したい」というやつだ。PHP では $arr[0] のように、変数名のうしろに [添字] を書くことで要素にアクセスする。これを 添字アクセス (インデックスアクセス) と呼ぶ。

注意したいのは 添字は 0 から始まる という点。[10, 20, 30] という配列なら、$arr[0]10$arr[1]20$arr[2]30 になる。「1 番目」と数えると $arr[1] に手が伸びてしまいがちで、これが初学者の典型的なバグの原因になる。実物のドリルで「先頭」「最後」「真ん中」を取り出して、添字と要素の対応を頭に染み込ませる。

存在しない添字にアクセスすると、PHP は null を返した上で Warning (警告) を出す (PHP 8 以降は警告レベルが上がっている)。エラーで止まらないため気付きにくいが、print_rvar_dump で確認するクセをつけておくと早く異変に気付ける。最後の要素は $arr[count($arr) - 1] で取り出すのが定石で、PHP には負の添字で末尾を指す構文 ($arr[-1] のようなもの) は標準では用意されていない。

学習目標

  • $arr[0] で配列の 1 番目の要素を取り出せる
  • 添字 (インデックス) が 0 から始まる ことを覚える
  • count($arr) - 1 で最後の要素にアクセスできる

ドリル

no 内容
01 $arr[0] で先頭の要素を取り出して出力
02 $arr[count($arr) - 1] で最後の要素を出力
03 真ん中の要素 $arr[1] を出力

解説スライド 全 7 枚

右の ボタン キー(またはスワイプ)で次のスライドに進めます。 下の「縦表示」を開くと全スライドを一気に読めます。

  1. 添字でアクセス

    Lesson 4 / Chapter 2

  2. 配列から 1 個ずつ取り出す

    <?php
    $nums = [10, 20, 30];
    echo $nums[0] . "\n";
    echo $nums[1] . "\n";
    echo $nums[2] . "\n";

    実行結果:

    10
    20
    30
    • $arr[番号] で配列から値を取り出す
    • この 番号 を「添字」「インデックス」と呼ぶ
  3. 添字は 0 から 始まる

    <?php
    $fruits = ["りんご", "みかん", "ぶどう"];
    
    echo $fruits[0] . "\n";  // りんご (1 番目)
    echo $fruits[1] . "\n";  // みかん (2 番目)
    echo $fruits[2] . "\n";  // ぶどう (3 番目)
    • 1 番目の要素は [0]
    • 2 番目は [1]、3 番目は [2]
    • これは初学者が最も間違えるポイント
  4. 要素数は count() で取る

    <?php
    $nums = [10, 20, 30, 40, 50];
    echo count($nums) . "\n";   // 5
    • count($arr) で配列の要素数 (長さ) が分かる
    • 上の例では 5 個入っているので 5
  5. 最後の要素は count() - 1

    <?php
    $nums = [10, 20, 30, 40, 50];
    $last = $nums[count($nums) - 1];
    echo $last . "\n";   // 50
    • 添字は 0 始まりなので、最後の添字は 要素数 - 1
    • 要素数 5 → 最後の添字は 5 - 1 = 4
    • $nums[4] が 50
  6. 範囲外の添字に注意

    <?php
    $nums = [10, 20, 30];
    echo $nums[10] . "\n";   // 警告: Undefined array key 10
    • 存在しない添字にアクセスすると 警告 が出て、値は空になる
    • アクセス前に count() で長さを確認する習慣をつける
  7. このチャプターでできるようになること

    $arr[0] で先頭の要素を取り出せる ✅ 添字が 0 始まりだと理解している ✅ count($arr) で要素数を取れる ✅ $arr[count($arr) - 1] で最後の要素を取れる

    → ドリルへ

1 / 7
📜 スライドを全部一気に読む(縦表示)

Lesson 4 / Chapter 2


配列から 1 個ずつ取り出す

<?php
$nums = [10, 20, 30];
echo $nums[0] . "\n";
echo $nums[1] . "\n";
echo $nums[2] . "\n";

実行結果:

10
20
30
  • $arr[番号] で配列から値を取り出す
  • この 番号 を「添字」「インデックス」と呼ぶ

添字は 0 から 始まる

<?php
$fruits = ["りんご", "みかん", "ぶどう"];

echo $fruits[0] . "\n";  // りんご (1 番目)
echo $fruits[1] . "\n";  // みかん (2 番目)
echo $fruits[2] . "\n";  // ぶどう (3 番目)
  • 1 番目の要素は [0]
  • 2 番目は [1]、3 番目は [2]
  • これは初学者が最も間違えるポイント

要素数は count() で取る

<?php
$nums = [10, 20, 30, 40, 50];
echo count($nums) . "\n";   // 5
  • count($arr) で配列の要素数 (長さ) が分かる
  • 上の例では 5 個入っているので 5

最後の要素は count() - 1

<?php
$nums = [10, 20, 30, 40, 50];
$last = $nums[count($nums) - 1];
echo $last . "\n";   // 50
  • 添字は 0 始まりなので、最後の添字は 要素数 - 1
  • 要素数 5 → 最後の添字は 5 - 1 = 4
  • $nums[4] が 50

範囲外の添字に注意

<?php
$nums = [10, 20, 30];
echo $nums[10] . "\n";   // 警告: Undefined array key 10
  • 存在しない添字にアクセスすると 警告 が出て、値は空になる
  • アクセス前に count() で長さを確認する習慣をつける

このチャプターでできるようになること

$arr[0] で先頭の要素を取り出せる ✅ 添字が 0 始まりだと理解している ✅ count($arr) で要素数を取れる ✅ $arr[count($arr) - 1] で最後の要素を取れる

→ ドリルへ

この章で取り組む 演習問題の流れ (3ステップ)
  1. 01 ドリル 01 — 先頭の要素 README.md starter.php answer.php
  2. 02 ドリル 02 — 最後の要素 README.md starter.php answer.php
  3. 03 ドリル 03 — 真ん中の要素 README.md starter.php answer.php

演習問題の詳細

この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。

ドリル 01 — 先頭の要素

問題

配列 [7, 14, 21, 28, 35]先頭の要素echo で 1 行出力してください。

期待される出力:

7

ヒント

  • $nums = [7, 14, 21, 28, 35];
  • echo $nums[0] . "\n";

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

ドリル 02 — 最後の要素

問題

配列 [7, 14, 21, 28, 35]最後の要素echo で 1 行出力してください。 要素数を count() で取り、count($arr) - 1 で添字を計算してください。

期待される出力:

35

ヒント

  • $nums = [7, 14, 21, 28, 35];
  • $last = $nums[count($nums) - 1];
  • echo $last . "\n";

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

ドリル 03 — 真ん中の要素

問題

配列 ["朝", "昼", "夜"]真ん中の要素 (添字 1) を echo で 1 行出力してください。

期待される出力:

ヒント

  • $times = ["朝", "昼", "夜"];
  • echo $times[1] . "\n";

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

演習問題(3問)

  1. ドリル 01 — 先頭の要素

    README.md starter.php answer.php

  2. ドリル 02 — 最後の要素

    README.md starter.php answer.php

  3. ドリル 03 — 真ん中の要素

    README.md starter.php answer.php

サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリを clone してください。

完了にすると進捗に反映されます