この記事の要点
- PHPの配列には「インデックス配列」「連想配列」「多次元配列」がある
- PHPの配列の要素はfor構文やforeach構文で表示できる
- array_searchやin_arrayで配列の要素の検索ができる
- array_pushやarray_mergeで配列の要素を結合できる
以前、PHPはどんなプログラミング言語なのかについて、記述ルールから副業案件の獲得まで解説していました。
今回はPHPの配列について基本から解説します。
PHPの配列は、システム開発の現場で頻繁に使われる機能です。
配列を使えば、処理を構造的に記述できるだけでなく、第三者がソースコードを読みやすくなるなど、多くのメリットがあります。
この記事では、インデックス配列・連想配列などの配列の種類のほか、要素の表示や追加など具体的な使い方について詳しく解説します。
目次
配列とは
配列とは、複数の変数や値を入れることができる「入れ物」のことです。
「変数」が1つの値しか代入できないのに対し、配列の場合は1つの配列の中に複数の値を代入することができます。
PHPで配列を使う場合、初めに初期化する処理が必要になります。
なお、初期化とは「値をリセットする」という意味です。
例)値の初期化
<?php //PHP5.3以前の書式 $array = array(); //PHP5.4から追加された書式(短縮構文) $array = []; ?>
配列は、初期化と同時に値を代入することもできます。
例)値の初期化と代入
<?php //PHP5.3以前の書式 $array = array("hoge", "fuga", "piyo"); //PHP5.4から追加された書式(短縮構文) $array = ["hoge", "fuga", "piyo"]; ?>
PHPの配列は3種類ある!
PHPの配列は、大きく分けて3種類あります。
どれもシステム開発においてよく使われるものなので、違いを理解して正しく使い分けましょう。
インデックス配列
インデックス配列は、文字通りインデックス(添え字)がキーとなっている配列のことです。
以下のように、3つのパターンで記述することができます。
例)インデックス配列の書き方
<?php //キー(インデックス)を明示しないパターン $array = ["Tokyo", "Kanagawa", "Chiba", "Saitama"]; //インデックスを明示するパターン(1) $array = []; $array[0] = "Tokyo"; $array[1] = "Kanagawa"; $array[2] = "Chiba"; $array[3] = "Saitama"; //インデックスを明示するパターン(2) $array = [ 0 => "Tokyo", 1 => "Kanagawa", 2 => "Chiba", 3 => "Saitama" ]; ?>
連想配列
連想配列は、「キー」と「値」が対になっている配列のことを指します。
連想配列はインデックス配列と異なり、文字列をキーに指定することができます。
例)連想配列の書き方(1)
<?php $array = [ "win" => "Windows", //[win]というキーに[Windows]という値が入っている "mac" => "Macintosh", "iphone" => "iPhone", "android" => "Android" ]; ?>
上の例は、以下のように書き換えることもできます。
例)連想配列の書き方(2)
<?php $array = []; $array["win"] = "Windows"; $array["mac"] = "Macintosh"; $array["iphone"] = "iPhone"; $array["android"] = "Android"; ?>
多次元配列
多次元配列とは、配列の中に配列が入れ子状態になっているものを指します。
たとえば、以下のようなものを指します。
例)多次元配列の書き方
<?php $array = [ "OS" => ["win" => "Windows", "mac" => "Macintosh"], "CPU" => ["intel", "AMD"], "Manufacturer" => ["Dell", "Lenovo", "LG"] ]; ?>
さまざまな状況に応じ使い分けることができる多次元配列は、エンジニアにとって非常に使い勝手がよいものです。
しかし、あまりに複雑すぎる多次元配列を書いてしまうと、ソースコードが読みにくくなる危険性があります。
多次元配列を使う際は、第三者が読んで理解できるようシンプルに作ることを心がけましょう。
PHPの配列を使ってみよう!
PHPの配列の基本的な使い方を見ていきましょう。
配列の要素をループで表示する
配列の種類ごとに、要素をループで表示する方法について見ていきます。
インデックス配列の場合
インデックス配列の場合はforまたはforeachで要素を表示できます。
例)インデックス配列を表示する
<?php $array = ["Tokyo", "Kanagawa", "Chiba"]; //forループで要素を表示する for ($i = 0; $i < count($array); $i++) { echo $i."番目の値は".$array[$i]."です<br>"; } //foreachループで要素を表示する foreach ($array as $key => $value) { echo $key."番目の値は".$value."です<br>"; } ?>
実行結果:
0番目の値はTokyoです 1番目の値はKanagawaです 2番目の値はChibaです
連想配列の場合
連想配列の場合、foreachで要素を表示できます。
例)連想配列を表示する
<?php $array = [ "win" => "Windows", "mac" => "Macintosh", "iphone" => "iPhone" ]; //要素を表示する foreach ($array as $key => $value) { echo "キー".$key."の値は".$value."です<br>"; } ?>
実行結果:
キーwinの値はWindowsです キーmacの値はMacintoshです キーiphoneの値はiPhoneです
多次元配列の場合
多次元配列の場合は、どのような入れ子状態になっているかを確認する必要があります。
例)多次元配列を表示する
<?php $array = [ "OS" => ["Windows", "Macintosh", "Android"], "CPU" => ["intel", "AMD"] ]; //要素を表示する foreach ($array as $key => $value) { //入れ子の外側は連想配列なのでforeach for ($i = 0; $i < count($value); $i++) { //入れ子の内側はインデックス配列なのでfor(foreachでも可) echo "キー".$key."の".$i."番目の値は".$value[$i]."です<br>"; } } ?>
実行結果:
キーOSの0番目の値はWindowsです キーOSの1番目の値はMacintoshです キーOSの2番目の値はAndroidです キーCPUの0番目の値はintelです キーCPUの1番目の値はAMDです
配列に要素を追加する
配列に要素を追加する方法について見ていきます。
インデックス配列の場合
インデックス配列の場合、以下のように追加することができます。
例)インデックス配列に要素を追加する
<?php $array = ["Tokyo, Kanagawa"]; //配列の末尾に追加 $array[] = "Osaka"; var_dump($array); ?>
実行結果:
array(3) { [0] => string(5) "Tokyo" [1] => string(8) "Kanagawa" [2] => string(5) "Osaka" }
連想配列の場合
連想配列の場合は、キーを明示して以下のように追加します。
例)連想配列にキーを明示して要素を追加する
<?php $array = [ "win" => "Windows", "mac" => "Macintosh" ]; $array["unix"] = "UNIX"; $array["mac"] = "Mac"; //すでに値があるキー var_dump($array); ?>
実行結果:
array(3) { ["win"] => string(7) "Windows" ["mac"] => string(3) "Mac" ["unix"] => string(4) "UNIX" }
なお、連想配列にキーを指定せず追加する場合、キーにはインデックスが自動設定されます。
例)連想配列にキーを明示せずに要素を追加する
<?php $array = [ "win" => "Windows", "mac" => "Macintosh" ]; $array[] = "Linux"; $array[] = "Solaris"; var_dump($array); ?>
実行結果:
array(4) { ["win"] => string(7) "Windows" ["mac"] => string(9) "Macintosh" ["0"] => string(5) "Linux" ["1"] => string(7) "Solaris" }
PHPの配列を応用して使ってみよう!
PHPの配列を応用して使う方法についてもご紹介します。
配列を検索する
配列の値を検索する関数には、array_searchとin_arrayがあります。
array_searchの使い方
array_searchは配列の値を検索してキーを返す関数です。
例)array_searchの使い方
<?php $array = ["Tokyo", "Kanagawa", "Chiba", "Saitama"]; var_dump(array_search("Kanagawa", $array)); var_dump(array_search("Fukuoka", $array)); //値が存在しない ?>
実行結果:
int(1) bool(false)
in_arrayの使い方
in_arrayは配列の値を検索し、値の有無を真偽値で返す関数です。
例)in_arrayの使い方
<?php $array = ["Tokyo", "Kanagawa", "Chiba", "Saitama"]; var_dump(in_array("Kanagawa", $array)); //存在する var_dump(in_array("Kyoto", $array)); //存在しない ?>
実行結果:
bool(true) bool(false)
配列を結合する
配列を結合する関数として、array_pushとarray_mergeがあります。
array_pushの使い方
array_pushは、配列の要素の最後に配列を追加したい場合に使います。
例)array_pushの使い方
<?php $array = ["Tokyo, Kanagawa"]; $add_array = ["Hokkaido, Okinawa"]; $new_array = array_push($array, $add_array); var_dump($new_array); ?>
実行結果:
array(4) { [0] => string(5) "Tokyo" [1] => string(8) "Kanagawa" [2] => string(8) "Hokkaido" [3] => string(7) "Okinawa" }
array_mergeの使い方
array_mergeは、配列同士を結合する場合に使います。
連想配列でキーが重複している場合は、後のものに上書きされるので注意してください。
例)array_mergeの使い方
<?php $array1 = [ "win" => "Windows", "mac" => "Macintosh" ]; $array2 = [ "ipad" => "iPad" "win" => "Windows11" //arrayと重複するキー ]; $new_array = array_merge($array1, $array2); var_dump($new_array); ?>
実行結果:
array(3) { ["win"] => string(9) "Windows11" ["mac"] => string(9) "Macintosh" ["iPad"] => string(4) "iPad" }
まとめ
配列の基本的な使い方、表示方法のほか、要素の追加はもちろん、配列の検索、結合などについてご説明しました。
PHPの配列の使い方をマスターすれば、さまざまな場面で活用できて大変便利です。
配列を使いこなし、PHPエンジニアとしてさらなるスキルアップを目指しましょう。
また、初心者プログラマーでも、PHPフレームワークを使えるようになれば受注できる仕事がさらに広がります。
2022年最新のPHPフレームワークベスト10や、初心者におススメの3つのフレームワークをご紹介している以下の記事も参考にしてみてください。
配列とともに便利なPHPの正規表現もマスターしましょう。
初心者でも簡単にわかる正規表現の基本から便利な早見表、チェックツールも紹介していますので、スキルアップを目指してみてください。