【PHP】arrayとは?初心者でもわかる配列の基本と活用方法を解説
はじめに
PHPでプログラミングを始めるとき、多くの人がまず扱うデータ構造が 配列 (array)です。
文字列や数値、他の配列までも、さまざまなデータをひとまとめに格納できるため、開発の現場では広く利用されています。
ですが、初心者の方は「どうやって配列を作るのか」「連想配列って何が違うのか」など、疑問も多いのではないでしょうか。
ここでは、PHPの配列について基本から詳しく解説していきます。
この記事を読むとわかること
- PHPの配列の基本的な書き方と特徴
- 連想配列、多次元配列の使い方
- 実務で役立つ配列操作の具体例
- 配列を扱う際の注意点とトラブルシューティング
それでは、順を追って見ていきましょう。
PHPの配列(array)とは
PHPの配列は、複数の値をひとつの変数で扱えるデータ構造です。
数値、文字列、ブーリアンなどの組み合わせもひとつの配列にまとめられます。
実務においては、商品一覧やユーザー情報をまとめるなど、データの管理に欠かせない存在です。
配列の基本的な書き方
PHPでは、配列を作成する方法は主に2つあります。
1つは array()
を使う方法、もう1つは []
(スクエアブラケット)を使う方法です。
実際にコードで見てみます。
<?php // array() を使って配列を作成 $colors = array("Red", "Green", "Blue"); // [] を使って配列を作成 $fruits = ["Apple", "Banana", "Orange"]; // 要素を取り出して出力 echo $colors[0]; // Red echo $fruits[1]; // Banana
このように、PHPでは array()
もしくは []
を使って配列を定義できます。
配列のインデックスは、最初の要素が0番目となるため、$colors[0]
は "Red" を示します。
連想配列の活用
PHPの配列には、連想配列というインデックスに名前(キー)を付けられる便利な仕組みがあります。
数値の連番ではなく、キーの名前で要素を管理したいときに非常に役立ちます。
<?php // 連想配列の例 $user = [ "name" => "Alice", "age" => 25, "city" => "Tokyo" ]; // 要素の取り出し echo $user["name"]; // Alice
実務では、ユーザー情報や設定データを保持するときなどによく使われます。
キーを自由に設定できるため、配列を見ただけでも意味がわかりやすい点が魅力です。
多次元配列の使い方
多次元配列とは、配列の中にさらに配列が入っている構造を指します。
たとえば、商品のカテゴリーごとに商品名のリストを格納するようなシーンで利用できます。
<?php $products = [ "Book" => ["Math Textbook", "Literature Book"], "Food" => ["Apple Pie", "Chocolate Bar"], "Drink" => ["Green Tea", "Coffee"] ]; // 取り出し echo $products["Food"][1]; // Chocolate Bar
多次元配列はデータを階層構造で整理したいときに便利ですが、階層が深くなるとコードが複雑になりやすいので注意が必要です。
配列の組み込み関数と実務例
PHPには、配列を操作するための多くの組み込み関数が用意されています。
ここでは、よく使われるものをいくつか挙げてみます。
要素の追加・削除に関する関数
array_push($array, $value)
配列の末尾に要素を追加します。
array_pop($array)
配列の末尾の要素を取り出して削除します。
array_shift($array)
配列の先頭要素を取り出して削除します。
array_unshift($array, $value)
配列の先頭に要素を追加します。
たとえば、ユーザーがフォームに入力したデータをまとめて最後に追加するシーンを考えると、array_push
が活躍します。
<?php $shoppingCart = ["T-Shirt", "Pants"]; array_push($shoppingCart, "Jacket"); // $shoppingCart = ["T-Shirt", "Pants", "Jacket"];
配列の探索や検索に関する関数
in_array($needle, $haystack)
指定した値 $needle
が配列 $haystack
に含まれているかどうかを確認します。
array_search($needle, $haystack)
指定した値 $needle
が配列 $haystack
のどのキーにあるかを返します。
たとえば、ユーザーが選択したアイテムが在庫リストに存在するかチェックしたい場合に in_array
が便利です。
<?php $stock = ["Laptop", "Mouse", "Keyboard"]; if (in_array("Mouse", $stock)) { echo "在庫があります"; } else { echo "在庫がありません"; }
要素の並び替えに関する関数
sort($array)
配列を昇順に並び替えます(キーはリセットされる)。
rsort($array)
配列を降順に並び替えます(キーはリセットされる)。
asort($array)
配列を昇順に並び替えます(キーは維持される)。
arsort($array)
配列を降順に並び替えます(キーは維持される)。
数値が含まれた配列や商品名のアルファベット順のソートなど、要素の並び替えが必要な場面で活用されます。
実務での利用イメージ
たとえば、商品の売上データを集計し、売上の高い順に並び替えてレポートを表示するといったケースがあります。
<?php $sales = [ "Apple" => 1200, "Banana" => 800, "Orange" => 950 ]; // 売上金額の大きい順に並び替え(キーを維持) arsort($sales); // ループして表示 foreach($sales as $item => $amount) { echo $item . ": " . $amount . "個\n"; }
配列を使った具体的な処理例
ここでは、PHPの配列をもう少し複合的に使う例を見ていきます。
配列とループを組み合わせた処理
配列の要素を順番に取り出す方法として、foreach
ループがよく使われます。
これは、要素の数を意識しなくても配列の全要素を簡単に扱えるためです。
<?php $users = [ ["id" => 1, "name" => "Alice", "email" => "alice@example.com"], ["id" => 2, "name" => "Bob", "email" => "bob@example.com"], ["id" => 3, "name" => "Carol", "email" => "carol@example.com"] ]; foreach ($users as $user) { echo "ユーザーID: " . $user["id"] . "\n"; echo "名前: " . $user["name"] . "\n"; echo "メール: " . $user["email"] . "\n"; echo "---\n"; }
実務シーンとしては、データベースから取得したユーザー情報を画面に一覧表示するときなどに使われる流れです。
配列のフィルタリング・ソートで条件検索
ユーザー情報や商品データが増えたとき、全てを表示するのではなく、特定の条件で絞り込んで画面に表示したいこともあります。
そんなときは、array_filter
や array_map
といった関数を組み合わせると便利です。
<?php $prices = [300, 1500, 800, 1000, 2200]; // 1000以上の商品だけを取り出す $filtered = array_filter($prices, function($price) { return $price >= 1000; }); // 結果をソート(昇順) sort($filtered); // 確認 foreach ($filtered as $value) { echo $value . "\n"; }
実務では、検索条件を指定して特定のユーザーリストだけ取り出したり、在庫が一定数以上ある商品だけを抽出したりといった場面で応用できます。
JSONとの連携
最近はAPI連携が欠かせません。
PHPの配列は、APIレスポンスやリクエストデータとやり取りするときにJSONに変換して扱うことがよくあります。
<?php $data = [ "status" => "success", "message" => "Operation completed", "items" => [1, 2, 3] ]; // 配列をJSON形式に変換 $jsonData = json_encode($data); // 例としてJSONを表示 echo $jsonData; // {"status":"success","message":"Operation completed","items":[1,2,3]}
このように、配列を json_encode
すればすぐにJSON文字列を取得できます。
反対に、受け取ったJSONを json_decode
で配列に戻せるので、REST APIを利用した実務でもよく目にするパターンです。
配列の実務活用で気をつけたいポイント
配列は便利ですが、無計画に使うとパフォーマンスや可読性の面で問題が起きることがあります。
配列が肥大化したときの工夫
大量のデータを一括で配列に詰め込むと、メモリ使用量が増えて動作が重くなる場合があります。
たとえば、ログデータやビッグデータのように要素数が数万、数十万に及ぶケースです。
実務では、以下のような対策を検討することが多いです。
- 必要なデータだけを配列に格納する
- 大量の配列処理が必要なときはデータベースの機能を活用する
- 要素が多いときは都度バッチ処理に分割して実行する
連想配列のキーの重複
連想配列はキーが被ると、後に定義したものが上書きされます。
複数のデータをマージする際には、キーの衝突がないか注意しましょう。
<?php $data1 = ["name" => "Alice", "city" => "Tokyo"]; $data2 = ["name" => "Bob", "job" => "Engineer"]; // マージ $merged = array_merge($data1, $data2); // 結果 /* [ "name" => "Bob", "city" => "Tokyo", "job" => "Engineer" ] */
このように、配列をマージした結果、name
が "Bob" で上書きされる点を踏まえると、「同じキーで上書きして良いのか」を事前に確認する必要があります。
書き込み権限の問題やセキュリティ
もしAPIなどから受け取ったデータを配列に変換して、そのまま処理するような仕組みを作る場合、不適切なデータが混入する可能性があります。
これによってセキュリティ的なリスクが生じるので、入力チェックを行ったり、バリデーションを通すなどして安全性を確保することが重要です。
大量のデータを配列に詰め込みすぎると、メモリ不足やパフォーマンス低下につながる可能性があります。
実務では、無闇に配列を拡張しない工夫を考えましょう。
配列のトラブルシューティング
開発を進める中で、配列にまつわるエラーは意外と多く発生します。
ここでは、よくあるトラブルと対処法を簡単にまとめます。
未定義のキーアクセス
連想配列を操作する時に、存在しないキーを参照してエラーが出るケースがあります。
<?php $user = [ "name" => "Alice", // "age" は定義されていない ]; echo $user["age"]; // エラーや警告が出る場合がある
対策としては、isset($user["age"])
や array_key_exists("age", $user)
でキーが定義されているかを確認すると安全です。
型が混在してしまう
同じ配列に文字列や数値、連想配列が混在しすぎると、何を表す配列なのか分かりづらくなることがあります。
これにより、後で再利用するときに意図せず型変換のエラーが発生するかもしれません。
データ構造が複雑になり始めたら、クラスやオブジェクト指向を検討するほうが、メンテナンス性は向上する場合があります。
連想配列のキーの表記ゆれ
「userName」「username」「user_name」のように、チームメンバー間でキーの命名がばらばらになると、読み取る側でバグが発生しがちです。
実務では、命名規則を共有するなどして、チーム全体でキーの表記を統一するようにしましょう。
配列のデータ構造が複雑になりすぎたと感じたら、オブジェクト指向や外部DBの利用を含め、システム全体の設計を見直すのも選択肢のひとつです。
まとめ
ここまで、PHPの配列について基本的な使い方から、連想配列、多次元配列、そして実務で役立つ操作方法までを一通り解説してきました。
- PHPの配列は、値をまとめて管理するための土台であり、実務でも広く使われる
- 連想配列はキーを名前で管理できるので、情報の把握がしやすい
- 多次元配列を扱うときは、階層が深くなりすぎないよう注意する
- 組み込み関数(
array_filter
,array_map
など)を活用すると、配列を柔軟に操作できる - JSONとの相互変換はAPI連携で欠かせない
配列の仕組みをしっかり理解しておくと、コードの可読性が高まり、データ処理の幅も広がります。
実務での開発効率をアップさせるためにも、配列の取り扱いをぜひ学んでおきましょう。