🔰 phpの基礎3〜配列・繰り返し処理
配列の作り方
PHPで配列を作るには、`[]` を使う。値はカンマで区切る。
以下のコードでは、$scores という変数に、4つの数字を持つ配列が格納されているイメージ。
<?php
$scores = [96, 86, 56, 89];
?>
配列の使い方
配列の中にある、それぞれの値を「要素」と呼ぶ。
要素を取り出すためには「添字(index)」を使う。
添字は、配列の中の要素の順番を表す番号。0から始まることに注意。要素を取り出すには、変数名に`[]`を付けて、括弧内に添字を書く。
$scores = [96, 86, 56, 89];
echo $scores[0]; // 96が出力される
echo $scores[1]; // 86が出力される
配列の要素は、後から変更できる。具体的な書き方は以下の2行目。
代入し直すイメージ。
$scores = [96, 86, 56, 89];
$scores[0] = 100; // 1番目の要素を100に変更
echo $scores[0]; // 100が出力される
配列に新しい要素の追加もできる。方法はいくつかある。
方法1:添字を指定しない
添字を指定せずに値を代入する方法。この場合、要素は配列の最後に追加される。
$scores = [96, 86, 56, 89];
$scores[] = 70; // 最後に70が追加される
echo $scores[4]; // 70が出力される
方法2: array_push関数を使う
array_push関数を使うと、方法1と同じく、配列の最後に要素を追加できる。
$scores = [96, 86, 56, 89];
array_push($scores, 70);
/* 第一引数に、要素を追加したい配列名
*** 第二引数に、追加したい要素の値を書く */
echo $scores[4]; // 70が出力される
方法3: array_merge関数を使う
複数の配列を結合するイメージ。
$scores = [96, 86, 56, 89];
$new_scores = [70, 80];
$scores = array_merge($scores, $new_scores);
// $scoresの最後に$new_scoresの要素が追加される
echo $scores[4]; // 70が出力される
echo $scores[5]; // 80が出力される
配列を初期化する方法
配列を初期化したい変数に、array関数で空の配列を作って代入する
$scores = [96, 86, 56, 89];
$scores = array(); //$scores = [];でもOK
連想配列ってなに?
連想配列とは、「キー」という名前をつけて値を管理できる配列のこと。
配列との違いは、値の管理方法が異なる点。配列は「添字(index)」で管理するのに対し、連想配列は、自分で名前を付けた「キー」で管理する。
職場のロッカーで例えると・・・
・ 普通の配列 「1番目のロッカー」「2番目のロッカー」
・ 連想配列 「佐藤さんのロッカー」「山田さんのロッカー」連想配列のメリットは、データの意味が分かりやすいこと。
番号で管理するよりも、キーをつけることによって、直感的にイメージしながらコーディングできる。
連想配列の作り方
PHPで連想配列を作るには、`[]` の中に「キー => 値」の形式で書く。
キーは文字列で指定する。
`=>` を使ってキーと値をつなぐ。
$scores = [
"数学" => 89,
"英語" => 76,
"理科" => 35,
"社会" => 83
];
要素の取り出し方
連想配列の中にある要素を取り出すにはキーを指定する。
echo $scores["理科"]; // 35が出力される
値の変更
要素の値を変更するには、キーを指定して新しい値を代入する。
$scores["理科"] = "100";
echo $scores["理科"]; // 100が出力される
要素を追加
連想配列に新しい要素を追加するには、キーを指定して値を代入する。
$scores["国語"] = 11;
echo $scores["国語"]; // 11が出力される
参考:配列の内容を確認する方法
foreach文で配列の要素の値を順番に処理
複数の要素が入った配列から、一つずつ取り出して処理したい時は、foreach文が便利。
foreach文は、配列の要素を順番に取り出して、指定した処理を繰り返すための構文のこと。以下のように書く。
foreach ($配列 as $変数) {
// 各要素に対して実行する処理
}
`$配列` : 処理対象の配列名
`$変数`: 要素の値を一時的に格納する変数。繰り返し処理によって、
次々と値が上書きされるイメージ。
foreach文の動きのイメージ
`foreach` 文の裏側では、以下の処理が行われている。
`$配列`の先頭の要素を取り出す。
取り出した要素を `$変数` に代入する。
`{}` 内の処理を実行する。
次の要素を取り出して、2・3を実行する。
これを配列の要素がなくなるまで繰り返す。
参考:foreach文で配列の要素のキーと値を順番に処理
キーと要素を処理したいときは、以下のように書く。
先ほどの例と同様に、`$キー`の変数と `$値`の変数それぞれに
キーと値が格納され、繰り返り処理が行われるイメージ。
foreach ($配列 as $キー => $値) {
// 各要素に対して実行する処理
}
while文で繰り返し処理をする
指定した条件を満たす間、処理を繰り返したいときには while文が便利。
以下のように書く。注意点は、無限ループを防ぐこと。処理途中で条件を満たさなくなるように書く必要がある。
while (条件) {
// 条件がtrueの間、実行する処理
}
for文との使い分けは、繰り返す数が変動する場合に while文を使う。
WordPressでは投稿データを取得する際にwhile文が使われる(理由は、投稿数は増減したりと変動するため)。