PHPの配列キーの基本

PHP
スポンサーリンク

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
10
Index 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] => 3

arsort(値・降順)

$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… に振り直される
  • 数値配列向け

連想配列では基本使わない