基礎

PHPの配列入門|配列の作成・操作・便利な関数を解説

配列は、複数のデータを一つの変数にまとめて管理できるデータ構造です。PHPの配列は非常に柔軟で、他の言語の配列・リスト・辞書(連想配列)の機能をすべて兼ね備えています。

この記事では、PHPの配列の作成方法から、要素の追加・削除、便利な組み込み関数まで詳しく解説します。

配列の作成

PHP
<?php
// 角括弧で作成(推奨)
$fruits = ["りんご", "みかん", "バナナ"];

// 空の配列を作成
$empty = [];

// 要素にアクセス(インデックスは0から始まる)
echo $fruits[0] . "\n"; // りんご
echo $fruits[1] . "\n"; // みかん
echo $fruits[2] . "\n"; // バナナ

// 要素数を取得
echo "要素数: " . count($fruits) . "\n";
?>
実行結果
りんご
みかん
バナナ
要素数: 3

配列のインデックス(添字)は0から始まります。count()関数で配列の要素数を取得できます。

連想配列

PHPの連想配列は、文字列のキーで値にアクセスできる配列です。

PHP
<?php
$user = [
    "name" => "田中太郎",
    "age" => 30,
    "email" => "tanaka@example.com",
];

echo "名前: " . $user["name"] . "\n";
echo "年齢: " . $user["age"] . "\n";
echo "メール: " . $user["email"] . "\n";

// 要素の追加
$user["phone"] = "090-1234-5678";
echo "電話: " . $user["phone"] . "\n";

// キーの存在確認
if (array_key_exists("email", $user)) {
    echo "emailキーが存在します\n";
}
?>
実行結果
名前: 田中太郎
年齢: 30
メール: tanaka@example.com
電話: 090-1234-5678
emailキーが存在します

要素の追加と削除

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

// 末尾に追加
$fruits[] = "バナナ";
array_push($fruits, "ぶどう");
echo "追加後: " . implode(", ", $fruits) . "\n";

// 先頭に追加
array_unshift($fruits, "メロン");
echo "先頭追加: " . implode(", ", $fruits) . "\n";

// 末尾から削除
$last = array_pop($fruits);
echo "削除: $last\n";

// 先頭から削除
$first = array_shift($fruits);
echo "削除: $first\n";

echo "結果: " . implode(", ", $fruits) . "\n";
?>
実行結果
追加後: りんご, みかん, バナナ, ぶどう
先頭追加: メロン, りんご, みかん, バナナ, ぶどう
削除: ぶどう
削除: メロン
結果: りんご, みかん, バナナ

便利な配列関数

PHP
<?php
$numbers = [3, 1, 4, 1, 5, 9, 2, 6];

// ソート
sort($numbers);
echo "ソート: " . implode(", ", $numbers) . "\n";

// 検索
$fruits = ["りんご", "みかん", "バナナ"];
if (in_array("みかん", $fruits)) {
    echo "みかんがあります\n";
}

// 重複除去
$data = [1, 2, 2, 3, 3, 3];
$unique = array_unique($data);
echo "重複除去: " . implode(", ", $unique) . "\n";

// 配列の結合
$a = [1, 2, 3];
$b = [4, 5, 6];
$merged = array_merge($a, $b);
echo "結合: " . implode(", ", $merged) . "\n";
?>
実行結果
ソート: 1, 1, 2, 3, 4, 5, 6, 9
みかんがあります
重複除去: 1, 2, 3
結合: 1, 2, 3, 4, 5, 6
unsetはインデックスを詰めない

unset()で要素を削除すると、インデックスが歯抜けになります。連番にしたい場合は array_values() でインデックスを振り直しましょう。

implode()とexplode()

implode()は配列を文字列に結合し、explode()は文字列を配列に分割します。CSV処理など文字列と配列を相互変換する際によく使います。

まとめ

  • PHPの配列は角括弧 [] で作成し、インデックスは0から始まる
  • 連想配列は「キー => 値」の形式で名前付きデータを管理できる
  • array_push()、array_pop()、unset()などで要素の追加・削除ができる
  • sort()、in_array()、array_merge()など豊富な組み込み関数がある
  • unset()で削除するとインデックスが歯抜けになる点に注意