MENU
Reina
エンジニア兼webライター
大学卒業後、食品企業の品質管理業務に4年半務める。

仕事と並行してプログラミングスクールで学習開始、見事未経験からエンジニア転職に成功しました。

現在は受託企業にてPHPエンジニアとして就業しています。

本業の傍ら、webライターとしても活動しています。

PHPの配列とは?注意点も一緒に解説します!【初心者必見】

当ページのリンクには広告が含まれています。

みなさんプログラミング学習において「配列」という名を聞いたことはないでしょうか?

プログラミング学習を始めたばかりの方にとっては、配列の概念や使い方を理解するのに難しいと感じることもあるでしょう。

配列をマスターできれば、コードも簡潔に書くことができ、まとまりのあるプログラムの作成ができます。

今回は初心者がつまづきやすい注意点もあわせて、PHPの配列を詳しく説明します。

この記事でわかること
  • PHPの配列の種類
  • PHPの配列の関数の使い方
  • PHPの配列の注意点

未経験でもPHPをマスターしたい方は、ぜひ「DMM WEBCAMP(PHP/Lalavelコース)」をチェックしてみてください!

目次

PHPの配列とは?

PHPの配列とは

PHPの配列は複数のデータ(value)をひとつの変数に、1つずつ(key)入れ、まとめて格納できる「データ構造」です。

PHPの配列はとても柔軟で、数値型や文字列型など、異なるデータ型を混在させることができます。

データ型とは

データ型とは、プログラムが扱うデータの種類を指します。

データ型は多数存在しており、代表的なものだと数値型の「integer」文字列型の「string」があります。

PHPの配列の大きな特徴は、次の3点です。

PHPの特徴
  • 配列のキーに数値・文字列が同時に使える
  • 異なるデータ型を一つの配列に混在させられる
  • サイズを動的に変更できる(固定サイズではない)

PHPの配列はキー(key)と値(value)をペアとして実装されています。

Reina

配列は複数の箱にモノを入れるようなことです。
分かりやすく収納できると考えると、とても便利ですね。

PHPの配列の使い方は?

PHPの配列の使い方は?
Reina

なんとなく配列の意味はわかりました!
では実際どんな時に使うんだろう?使い方も気になります。

PHPの配列は大きく分けて3種類あります。

  • 配列(数値がキー)
  • 連想配列
  • 多次元配列

配列といっても、3つの種類に分かれるため、違いを理解して使用することが重要です。

次で詳しく3つの配列を説明します。

配列(キーが数値)

まずは基本的な配列の使い方を紹介します。シンプルな配列は、要素に対して0から始まる番号でアクセスします。

基本的な配列の書き方は以下になります。

// 配列の宣言と初期化
$fruits = array('apple', 'banana', 'orange');

// PHP 5.4以降の短縮構文
$fruits = [
    'apple',
    'banana',
    'orange',
];

print_r($fruits)

//実行結果
Array
(
    [0] => 'apple'
    [1] => 'banana'
    [2] => 'orange'
)

// 配列の要素へのアクセス
echo $fruits[0]; // apple
echo $fruits[1]; // banana
echo $fruits[2]; // orange

array()と短縮構文は書き方は異なりますが、同じ実行結果です。

配列はキーを省略して定義すると、自動的に0から始まる連番が振られます。

Reina

こちらがシンプルな配列の構文になります。
キーは1ではなく0から始まるので、間違わないように気を付けましょう。

連想配列

連想配列は、数値ではなく文字列をキーとして使用する配列です。これにより、データに意味のあるラベルを付けることができます。

連想配列の書き方は、以下になります。

// 連想配列の宣言と初期化
$person = array(
    'name' => '山田 太郎',
    'age'  => 30,
    'city' => '東京'
);

// PHP 5.4以降の短縮構文
$person = [
    'name' => '山田 太郎',
    'age'  => 30,
    'city' => '東京'
];

//実行結果
Array
(
    ['name'] => '山田 太郎'
    ['age']  => 30
    ['city'] => '東京'
)

// 連想配列の要素へのアクセス
echo $person['name']; // 山田太郎
echo $person['age'];  // 30
echo $person['city']; // 東京

連想配列を使うと、データがどのような意味を持つのか明確になり、コードの可読性が高まります。

Reina

キーが数字ではなく文字列に変わってわかりやすくなりました!
文字列にすると、データがどこに入っているのか理解しやすくなりますね。

多次元配列

多次元配列は、配列の中に配列を入れ子にした構造であり、二次元配列三次元配列などがあります。

入れ子とは

ある構造の内部に同じ構造が含まれている状態のことを指し、「ネスティング」とも呼びます。

配列に例えると、配列の中に配列がある状態をいいます。

多次元配列の書き方は、以下になります。

// 二次元配列の例
$students = [
    ['name' => '佐藤', 'score' => 85], 
    ['name' => '鈴木', 'score' => 92],
    ['name' => '田中', 'score' => 78]
];

// 多次元配列の要素へのアクセス
echo $students[0]['name'];  // 佐藤
echo $students[1]['score']; // 92

// 三次元配列の例
$school = [
    '1年生' => [
        'クラスA' => ['田中', '佐藤', '鈴木'],
        'クラスB' => ['高橋', '伊藤', '渡辺']
    ],
    '2年生' => [
        'クラスA' => ['山本', '中村', '小林'],
        'クラスB' => ['加藤', '吉田', '山田']
    ]
];

echo $school['1年生']['クラスA'][0]; // 田中

多次元配列は複雑なデータ構造を表現するのに役立つ配列となります。

Reina

しかし、入れ子が深くなりすぎると可読性が低下してしまうので注意しましょう。

将来アプリやシステム開発をしてみたい、Webエンジニアになりたいとお考えの方は、PHPの習得がおすすめです。

PHPを学べるプログラミングスクールとして、DMM WEBCAMPは「PHP/Lalavelコース」が存在しており、未経験からでも習得が可能です。

PHPをマスターしたい方はぜひチェックしてみてください。

PHPをマスターしよう!

PHPの配列に役立つ関数

PHPの配列に役立つ関数
Reina

配列にもいろいろな種類があるのがわかりました!
でも、もしも新しいデータを途中で入れたくなったり削除したくなったとき、どうすればいいだろう?

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

関数とは

関数とは、処理を行うプログラムを指します。

例えばfunctionという関数名の場合、「function()」と書きます。

関数に値(引数)を渡すことで結果を返してくれます(戻り値)

配列は関数を使用することで、以下のことが可能です。

PHPの配列の関数でできること
  • 配列の要素を追加・削除できる
  • 配列の並び替えを変更できる
  • 配列の検索や抽出ができる

次で頻繁に使う関数をいくつか紹介します。

配列の要素を追加・削除する

まずは配列の要素を追加したり削除したりできる関数を紹介します。

  • array_push
  • array_unshift
  • array_pop
  • array_shift
  • array_value

これらの関数は、引数を用いて使用していきます。

引数とは

関数に渡す値を指し、「関数名(引数1、引数2…)」と書きます。

引数を関数に渡すことで、関数はその値に応じた処理を行なってくれます。

各配列の関数について、次で詳しく説明します。

array_push

array_pushは配列の末尾に要素を追加できる関数です。

$fruits = ['りんご', 'バナナ'];

// 引数1に配列、引数2に末尾に追加したい要素
array_push($fruits, 'オレンジ');

// この書き方でもOK
$fruits[] = 'オレンジ';

print_r($fruits);

//実行結果
Array
(
    [0] => 'りんご'
    [1] => 'バナナ'
    [2] => 'オレンジ'
)

array_unshift

array_unshiftは配列の先頭に要素を追加する関数です。

$fruits = ['りんご', 'バナナ'];

// 引数1に配列、引数2に先頭に追加したい要素
array_unshift($fruits, 'ぶどう');

print_r($fruits);

//実行結果
Array
(
    [0] => 'ぶどう'
    [1] => 'りんご'
    [2] => 'バナナ'
)

array_pop

array_popは配列の末尾から要素を削除する関数です。

$fruits = ['りんご', 'バナナ'];

// 配列の末尾から要素を削除して取得
array_pop($fruits);

print_r($fruits);

//実行結果
Array
(
    [0] => 'りんご'
)

array_shift

array_shiftは配列の先頭から要素を削除する関数です。

$fruits = ['りんご', 'バナナ'];

// 配列の先頭から要素を削除して取得
array_shift($fruits);

print_r($fruits);

//実行結果
Array
(
    [0] => 'バナナ'
)

array_value

array_valueは配列から全て取り出し、キーを数値に置き換えて詰める関数です。

$colors = ['赤', '青', '緑', '黄'];

// まずは特定の位置の要素を削除
unset($colors[1]); 

// '青'が削除される
$colors = [0 => '赤', 2 => '緑', 3 => '黄']
// 注意: unset()後、インデックスは詰められない

// array_valueを使って全て取得し、インデックスを詰める
array_values($colors);

print_r($colors);

//実行結果
Array
(
    [0] => '赤'
    [1] => '緑'
    [2] => '黄'
)

配列の並べ替え

関数を使うことで、配列の順を並び替えることができます。

  • sort
  • rsort
  • asort
  • ksort

配列における並び替え関数について、次で詳しく説明します。

sort

sortは昇順に並び替える関数です。

$numbers = [5, 3, 8, 1, 9];

sort($numbers);

print_r($numbers);

//実行結果
Array
(
    [0] => '1'
    [1] => '3'
    [2] => '5'
    [3] => '8'
    [4] => '9'
)

rsort

rsortは降順に並び替える関数です。

$numbers = [5, 3, 8, 1, 9];

rsort($numbers);

print_r($numbers);

//実行結果
Array
(
    [0] => '9'
    [1] => '8'
    [2] => '5'
    [3] => '3'
    [4] => '1'
)

asort

asortはキーと値の関連付けを維持しながら値で昇順に並び替える関数です。

$fruits = [
    'o' => 'banana',
    'b' => 'apple',
    'a' => 'orange'
];

asort($numbers);

print_r($numbers);

//実行結果
Array
(
    'b' => 'apple'
    'o' => 'banana'
    'a' => 'orange'
)

ksort

ksortはキーと値の関連付けを維持しながらキーで昇順に並び替える関数です。

$fruits = [
    'o' => 'banana',
    'b' => 'apple',
    'a' => 'orange'
];

ksort($numbers);

print_r($numbers);

//実行結果
Array
(
    'a' => 'orange'
    'b' => 'apple'
    'o' => 'banana'
)

配列の検索と抽出

配列の関数は、特定の要素を検索したり抽出したりも可能です。

  • array_search
  • in_array
  • array_filter
  • array_map

配列の検索と抽出について、次で詳しく説明します。

array_search

array_searchは指定した値を配列で検索し、見つかった場合に対応するキーを返す関数です。

$fruits = ['りんご', 'バナナ', 'オレンジ', 'ぶどう'];

// 引数1に検索したい値、引数2に配列
$position = array_search('バナナ', $fruits);
// $position = 1

in_array

in_arrayは指定した要素が配列に存在するか確認する関数です。

$fruits = ['りんご', 'バナナ', 'オレンジ', 'ぶどう'];

// 引数1に確認したい値、引数2に配列
$exists = in_array('オレンジ', $fruits);
// 値が存在する場合、trueを返す
// $exists = true

array_filter

array_filterは条件に合う要素だけを抽出する関数です。

$fruits = ['りんご', 'バナナ', 'オレンジ', 'ぶどう'];

function value($fruit) {
    return strlen($fruit) > 3; // 文字数が3より大きい要素を返す
}

// 引数1に配列、引数2に関数名
$value = array_filter($fruits, value);

print_r($value);

//実行結果
Array
(
    '0' => 'りんご'
    '1' => 'バナナ'
    '2' => 'ぶどう'
)

array_map

array_mapは、配列の要素全てに対して、指定した関数を適用させる場合に使用する関数です

$fruits = ['りんご', 'バナナ', 'オレンジ', 'ぶどう'];

function value($fruit) {
    return strlen($fruit); // 各要素の文字数を取得
}

// 引数1に関数名、引数2に配列
$value = array_map(value, $fruits);

print_r($value);

//実行結果
Array
(
    '0' => 3
    '1' => 3
    '2' => 4
    '3' => 3
)

PHPの配列の注意点

PHPの配列の注意点
Reina

関数を使用すると、簡単に配列の操作ができることがわかりました!
でも慣れるまで時間がかかりそうです。配列で注意すべきポイントはあるのでしょうか?

PHPの配列を使うとき、注意点があります。

PHPの配列の注意点
  • キーの型が自動変換される
  • 配列のキーが連番にならない場合がある
  • 配列の関数の動作や戻り値について

この3点について、次で詳しく説明します。

キーの型が自動変換される

PHPの配列では、キーが数値か文字列に自動で変換されます。

例えばキーをtrue・null・1.5など に設定すると、 1 や空文字に変換されます

$array = [
    true => 'A',
    1 => 'B',
];

print_r($array)

//実行結果
Array
(
    '1' => 'B'
) 
// 結果、'A' が上書きされる

このように意図しない上書きが起こる可能性があります。

配列のキーが連番にならない場合がある

array() や [] で要素を追加していくと、自動的にインデックスが振られます。

しかし明示的にキーを指定したり、途中で要素を削除したりすると、連番でなくなることがあります

$array    = [];
$array[]  = 'A'; // index 0
$array[3] = 'B';
$array[]  = 'C'; 

print_r($array)

//実行結果
Array
(
    '0' => 'A'
    '3' => 'B'
    '4' => 'C'
) 
// index 4になる

配列の関数の動作や戻り値について

例えば array_merge() は数値キーを振り直しますが、+ 演算子は元のキーを保持します。

$a = [1 => 'A'];
$b = [2 => 'B'];

$result1 = $a + $b; 
//実行結果
Array
(
    '1' => 'A'
    '2' => 'B'
) 

$result2 = array_merge($a, $b); 
//実行結果
Array
(
    '0' => 'A'
    '1' => 'B'
) 

違いを理解し、必要に応じる必要があります。

まとめ:PHPの配列をマスターしよう

今回はPHPの配列について、つまづきやすい注意点もあわせてご紹介しました。

PHPの配列は非常に柔軟で強力なデータ構造です。基本的な使い方やつまづきやすいポイントを理解すれば、PHPプログラミングがぐっと楽になるでしょう。

本記事のまとめ
  • 数値添字配列、連想配列、多次元配列の違いと使い分け
  • 配列操作に便利な関数を活用する
  • 配列を使う時の注意点の把握

これらのポイントを押さえて、PHPの配列をしっかりマスターしましょう。

DMM WEBCAMP(PHP/Lalavelコース)では、PHPとフレームワークLaravelを活用した学習が可能です。

配列はもちろん基礎学習から始まりオリジナルWebサービス開発が可能なので、転職活動に必要なポートフォリオの作成が可能です。

PHPをマスターして、Webエンジニアへの転職を目指している方はいかがでしょうか、ぜひチェックしてみてください!

PHPとLaravelを学びたい方はぜひDMM WEBCAMPへ!

未経験でも取得可能!

この記事を読んで、みなさんのPHPプログラミングの上達に貢献できれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大学卒業後、新卒で食品の品質管理業務を4年半務める。

2023年3月よりDMM WEBCAMP 就業両立コースにてプログラミング学習開始し、見事未経験からエンジニア転職に成功。

現在は受託企業にてPHPエンジニアとして日々奮闘中。

エンジニアとして働く傍ら、Webライターとしても活動中です。

目次