PHPの配列は 連想配列(Associative Array) と 数値配列(Indexed Array) の両方を扱えます。
配列の種類
PHPの配列には主に3種類があります。
| 配列の種類 | キーの種類 | 例 |
| 数値配列(Indexed Array) | 整数 0,1,2… | [70, 90, 80] → [0=>70, 1=>90, 2=>80] |
| 連想配列(Associative Array) | 文字列(または整数) | ["math"=>90, "english"=>70] |
| 混合配列(Mixed Array) | 整数+文字列 | [10=>70, "math"=>90, 0=>40] |
数値配列(Indexed Array)
$scores = [70, 90, 80, 40, 60, 10];
$scores = ["apple", "bnana", "cranberry"];アクセス
$scores = [70, 90, 80, 40, 60, 10];
echo $scores[0]; // 70
echo $scores[2]; // 80追加
$scores[] = 100; // 自動で次の整数キーに追加ループ処理
$scores = [70, 90, 80, 40, 60, 10];
foreach ($scores as $score) {
echo $score . PHP_EOL;
}$scores = [70, 90, 80, 40, 60, 10];
// インデックスも必要な場合
foreach ($scores as $index => $score) {
echo "Index $index: $score" . PHP_EOL;
}出力
70
90
80
40
60
10Index 0: 70
Index 1: 90
Index 2: 80
Index 3: 40
Index 4: 60
Index 5: 10連想配列(Associative Array)
キー => 値
「(矢印)の前がキー」=>「(矢印)の後が値」
$scores = ["english" => 79, "math" => 80];アクセス
$scores = ["english" => 79, "math" => 80];
echo $scores["english"]; // 79
echo $scores["math"]; // 90
echo $scores["history"]; // 50追加
$scores["math"] = 90; // 上書き
$scores["history"] = 50; // 追加ループ処理
$scores = ["english" => 79, "math" => 80];
foreach ($scores as $subject => $score) {
echo "$subject: $score" . PHP_EOL;
}出力
english: 79
math: 90
history: 50こういうのも連想配列
$data = [
"name" => "banana",
"price" => 120,
"tags" => ["fruit", "yellow"],
"sale" => true
];| キー | 値 | 値の型 |
|---|---|---|
"name" | "banana" | 文字列 |
"price" | 120 | 数値(int) |
"tags" | ["fruit", "yellow"] | 配列(数値配列) [0 => “fruit”, 1 => “yellow”] |
"sale" | true | 真偽値(bool) |
混合配列(Mixed Array)
$mixed = [10 => "ten", "math" => 90, 0 => 40];アクセス
echo $mixed[10]; // ten
echo $mixed["math"]; // 90
echo $mixed[0]; // 40追加
$mixed[20] = "twenty"; // 整数キー追加
$mixed["english"] = 70; // 文字列キー追加
$mixed[] = 100; // 自動で最大の整数キー + 1 がキーになりますループ処理
$mixed = [10 => "ten", "math" => 90, 0 => 40];
foreach ($mixed as $key => $value) {
echo "$key => $value" . PHP_EOL;
}出力
10 => ten
math => 90
0 => 40配列操作でよく使うキー・値・ソート系関数
array_keys()
役割:配列のキーだけを取り出す
書式:array_keys(array $array)
$scores = ["english" => 79, "math" => 90, "history" => 50];
$keys = array_keys($scores);
print_r($keys);出力
Array
(
[0] => english
[1] => math
[2] => history
)array_values()
役割:配列の値だけを取り出す
書式:array_values(array $array)
$scores = ["english" => 79, "math" => 90, "history" => 50];
$values = array_values($scores);
print_r($values);出力
Array
(
[0] => 79
[1] => 90
[2] => 50
)array_key_exists()
役割:指定したキーが配列にあるかチェック
書式:array_key_exists($key, $array) → true / false
$scores = ["english" => 79, "math" => 90, "history" => 50];
if (array_key_exists("math", $scores)) {
echo "mathはあります!";
}mathはあります!ksort()
役割:配列を キー順に昇順ソート
書式:ksort($array)
元の配列が上書きされます
$mixed = ["b" => 2, "a" => 1, "c" => 3];
ksort($mixed);
print_r($mixed);出力
Array
(
[a] => 1
[b] => 2
[c] => 3
)数字キーの場合もOK
$data = [10 => "ten", 2 => "two", 5 => "five"];
ksort($data);
print_r($data);出力
Array
(
[2] => two
[5] => five
[10] => ten
)krsort()
役割:配列を キー順に降順ソート
書式:krsort($array)
krsort($mixed);
print_r($mixed);出力
Array
(
[c] => 3
[b] => 2
[a] => 1
)asort(値・昇順)
$data = ["b" => 2, "a" => 1, "c" => 3];
asort($data);
print_r($data);出力
[a] => 1
[b] => 2
[c] => 3arsort(値・降順)
$data = ["b" => 2, "a" => 1, "c" => 3];
arsort($data);
print_r($data);出力
[c] => 3
[b] => 2
[a] => 1値で並べるけど キーはそのまま
🌟よくある落とし穴(超大事)
sort / rsort は別物
sort($data);
- ❌ キーが 0,1,2… に振り直される
- 数値配列向け
連想配列では基本使わない
