PHPの配列の基本:作り方・追加・取り出し方

phpアイキャッチ PHP

こんにちは、かつコーチです。

前回は forwhileforeach を使った繰り返し処理を解説しました。

今回のテーマは「配列」です。

配列は、繰り返し処理とセットで使う場面がとても多く、PHPを書くうえで避けて通れない基本機能です。

「変数はひとつの値しか入れられないけど、複数のデータをまとめて扱いたい」——そんなときに配列が活躍します。

配列とは?

配列の役割

配列(はいれつ)とは、複数の値をひとつの変数にまとめて格納できる仕組みのことです。

たとえば「好きな果物を3つ管理したい」場合、普通の変数だとこうなります。

<?php
$fruit1 = "りんご";
$fruit2 = "みかん";
$fruit3 = "ぶどう";
?>

これだと果物が増えるたびに変数を増やす必要があり、管理が大変です。

配列を使うと、これを1つの変数にまとめられます。

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

前回学んだ foreach は、この配列の中身を1つずつ取り出して処理するための構文でした。

配列と繰り返し処理は、いわばセットの存在です。

なぜ配列が必要なのか

実務では「ユーザー一覧」「商品リスト」「フォームで送られてきた複数のチェックボックスの値」など、複数のデータをまとめて扱う場面が非常に多いです。

配列を使わずに1件ずつ変数を作っていたら、コードはあっという間に破綻します。

配列を覚えることで、こうした「複数件のデータをまとめて処理する」という、実務で最も頻繁に使う考え方が身につきます。

配列の基本的な使い方

配列を作る

配列を作るには [](角括弧)を使います。

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

古い書き方として array() という関数を使う方法もありますが、現在は [] の方が主流です。

<?php
// 古い書き方(今も動くが、現在はあまり使われない)
$fruits = array("りんご", "みかん", "ぶどう");
?>

社内の古いシステムを触ると array() で書かれたコードに出会うこともあるので、両方の書き方を知っておくと安心です。

添字(インデックス)で値を取り出す

配列の中の値には、それぞれ添字(インデックス)と呼ばれる番号が自動で振られます。

添字は 0 から始まる点に注意してください。

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

echo $fruits[0]; // りんご
echo $fruits[1]; // みかん
echo $fruits[2]; // ぶどう
?>

「1番目だから $fruits[1]」ではなく、「1番目は $fruits[0]」という点が最初は混乱しやすいポイントです。

値を追加する

配列の末尾に値を追加するには、$配列名[] = 値 という書き方を使います。

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

print_r($fruits);
// 出力:
// Array
// (
//     [0] => りんご
//     [1] => みかん
//     [2] => ぶどう
// )
?>

[] の中に数字を書かずに空にしておくと、PHPが自動で「次の番号」を割り振って追加してくれます。

配列の中身を確認したいときは、echo ではなく print_r() を使うと構造ごと見えるので便利です。

値を更新・削除する

添字を指定すれば、既存の値を上書きできます。

<?php
$fruits = ["りんご", "みかん", "ぶどう"];
$fruits[1] = "もも"; // 「みかん」を「もも」に上書き

print_r($fruits);
// 出力:
// Array
// (
//     [0] => りんご
//     [1] => もも
//     [2] => ぶどう
// )
?>

削除には unset() を使います。

<?php
$fruits = ["りんご", "みかん", "ぶどう"];
unset($fruits[1]); // 「みかん」を削除

print_r($fruits);
// 出力:
// Array
// (
//     [0] => りんご
//     [2] => ぶどう
// )
?>

unset() で削除しても、添字は詰め直されない点に注意してください。

[1] が消えたまま [0][2] だけが残る、という状態になります。

配列と繰り返し処理を組み合わせる

前回学んだ foreach を使うと、配列の中身を1つずつ簡単に取り出せます。

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

foreach ($fruits as $fruit) {
    echo $fruit . "\n";
}
// 出力:
// りんご
// みかん
// ぶどう
?>

添字も同時に使いたい場合は、as $key => $value の形にします。

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

foreach ($fruits as $index => $fruit) {
    echo ($index + 1) . "番目: " . $fruit . "\n";
}
// 出力:
// 1番目: りんご
// 2番目: みかん
// 3番目: ぶどう
?>

よくあるつまずきポイント・エラー対処

存在しない添字にアクセスしてしまう

私が実際にやってしまった失敗のひとつが、配列の要素数を数え間違えて、存在しない添字にアクセスしてしまうミスです。

❌ Before:配列の範囲外にアクセスしてしまう

<?php
$fruits = ["りんご", "みかん", "ぶどう"]; // 添字は0, 1, 2

echo $fruits[3]; // 存在しない添字にアクセス
?>

このコードを実行すると、次のような警告が表示されます。

Warning: Undefined array key 3 in /path/to/file.php on line 4

私は最初「3つ入っているから [3] でいけるはず」と勘違いして、この警告に何度も遭遇しました。

原因は単純で、要素数が3個なら添字は 0, 1, 2 までしか存在しない、という基本を忘れていたことです。

✅ After:isset()count() で存在確認してからアクセスする

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

if (isset($fruits[3])) {
    echo $fruits[3];
} else {
    echo "3番目の要素は存在しません";
}

// 配列の要素数を確認する
echo "要素数: " . count($fruits); // 要素数: 3
?>

isset() で添字が存在するかを事前に確認する、もしくは count() で要素数そのものを確認する癖をつけると、この手のミスを未然に防げます。

「配列の最後の添字は count($配列) - 1」という関係を意識しておくと、範囲外アクセスのミスがぐっと減ります。

配列同士を安易に == で比較してしまう

もうひとつよくあるのが、配列の中身を確認したいときに、if 文で配列そのものを直接比較しようとしてエラーになるケースです。

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

if ($fruits == "りんご,みかん") {
    echo "一致";
}
// 意図した通りに動かない(配列と文字列は型が違うため一致しない)
?>

配列の中身を確認したいときは、比較演算子ではなく in_array() を使うのが正解です。

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

if (in_array("みかん", $fruits)) {
    echo "みかんは配列に含まれています";
}
?>

in_array() は「指定した値が配列の中に含まれているか」を true / false で返してくれる関数です。

応用・一歩先の使い方

配列を関数に渡して処理する

配列は関数の引数としてもよく使われます。

<?php
function totalPrice($prices) {
    $total = 0;
    foreach ($prices as $price) {
        $total += $price;
    }
    return $total;
}

$cartPrices = [1200, 3000, 500];
echo "合計金額: " . totalPrice($cartPrices) . "円";
// 出力: 合計金額: 4700円
?>

「配列をまるごと関数に渡して、中でループ処理する」というパターンは、実務でも非常によく使う型です。

関数の作り方や引数の扱いについては、次回の記事で詳しく解説します。

配列を操作する便利な関数

PHPには配列を操作するための便利な関数が数多く用意されています。

代表的なものだけでも押さえておきましょう。

<?php
$numbers = [5, 3, 8, 1];

sort($numbers); // 昇順に並び替え
print_r($numbers); // [1, 3, 5, 8]

$total = array_sum($numbers); // 合計を計算
echo $total; // 17

$count = count($numbers); // 要素数を取得
echo $count; // 4
?>

こうした関数を知っておくと、自分でループを書かなくても一発で処理できる場面が増えます。

まとめ

この記事のポイント

  • 配列は複数の値をひとつの変数にまとめて扱う仕組み
  • 添字は 0 から始まる(3つの要素なら添字は 0, 1, 2
  • 追加は $配列[] = 値、削除は unset()
  • 存在しない添字へのアクセスは Warning: Undefined array key の原因になるため isset()count() で確認する
  • foreach と組み合わせることで、配列の中身を効率よく処理できる

次に読むべき記事

配列の基本が分かったら、次は「キーに名前をつけられる配列」である連想配列を学んでいきましょう。

→ 次の記事:PHPの連想配列を使いこなす

タイトルとURLをコピーしました