- PHPが気になっている人
- PHPを勉強し始めたばかりの人
- PHP初級技術者認定試験を受験しようと思っている人
こんにちは〜、Toyです!
本日もPHP技術者認定初級試験に向けた勉強を行っていきたいと思います。
前回は、『ロジック〜判定と繰り返し〜』について勉強しましたね。
https://tee-916.com/2019/10/01/php7_exam_measure3/
本日のテーマは『配列の操作』についてです。
配列
配列は関連する複数の値を保持することのできる容器です。配列を管理するためにつける配列名の前には、変数名と同様、必ず「$」をつけます。また、変数名同様の命名規則も適用されます。
- 先頭の文字はアルファベット、またはアンダースコア「_」
- 2文字目以降は、アルファベット、数字、アンダースコア「_」のみ
配列は複数の要素から成っており、各要素は添字(キー:key)と値(バリュー:value)を保持しています。1つのキーに対して、1つの要素が存在します。
配列のキーには任意の文字列や数値を指定することができ、特に文字列をキーとする配列は連想配列と呼ばれています。
また、配列の値には数値や文字列、true、false、その他の配列など様々な値を指定することができます。
配列の作成
配列の作成方法は2種類あります。
// <方法1>
$配列名 = array(値1, 値2, 値3, …);
// <方法2>
$配列名[キー] = 値;
配列の作成例を示します。
// 教科名の配列
// 格納方法1を使用
$subjects = array('Math', 'Japanese', 'Science');
// 格納方法2を使用
$subject[0] = 'Math'; //
$subject = 'Japanese';
$subject = 'Science';
// 配列の中身を出力させる
print var_dump($subjects);
// キーが科目、値が点数となる連想配列
// 格納方法1を使用
$scores = array('Math' => 88, 'Japanese' => 66);
// 格納方法2を使用
$scores['Math'] = 88;
$scores['Japanese'] = 66;
print var_dump($scores);
このプログラムの出力結果は
[0]=>
string(4) “Math”
=>
string(8) “Japanese”
=>
string(7) “Science”
}
array(2) {
[“Math”]=>
int(88)
[“Japanese”]=>
int(66)
}
となります。
配列の要素
配列は順番付けられたマップであるため、要素を追加した順番は保持されています。
また、上述の配列作成方法では、新しい要素を追加する際にキーを指定しましたが、キーは省略が可能です。キー未指定の場合は0から割り当てられますが、他の要素に0以上の数値を指定した場合、その数値に1を足した値が割り当てられます。
<キーを省略した要素の追加例>
// キー未指定で要素を追加
$subjects[] = 'Math';
$subjects[] = 'Japanese';
$subjects[] = 'Science';
// 配列の中身を表示
print var_dump($subjects);
出力結果は
[0]=>
string(4) “Math”
=>
string(8) “Japanese”
=>
string(7) “Science”
}
となります。
配列の値を別の配列にコピーする場合、参照数は増えますが、データはすぐにコピーされないため、要素数の多い配列をコピーしてもメモリの消費量の増加は少なくなっています。(実際にデータがコピーされるのは、どちらかの配列の値を変更する時です。)
for文とforeach文
配列内の全ての要素同様の処理を施すためのもっとも簡単な方法として、foreach()構文を使用する方法があります。foreach()構文は配列内のすべての要素に対してコードブロックを実行します。
<foreach()構文>
// 数値配列の場合
foreach ($配列名 as $各要素の値を保存する一時的な変数の名前) {
// 処理内容を記述
}
// 連想配列の場合
foreach ($配列名 as $キーの一時保存変数名 => $値の一時変数名) {
// 処理内容を記述
}
以下に、foreach()構文の使用例を記述します。
<foreach()構文>
$hands[0] ='rock';
$hands ='paper';
$hands ='scissors';
foreach ($hands as $key => $value) {
print "$key: $value\n";
}
出力結果は
0: rock
1: paper
2: scissors
となります。
配列の操作
配列を操作する際によく使用する関数はこちらです。
関数 | 役割 |
---|---|
count($var) | $varの要素数を返す |
explode($d, $str) | $strを$dで分割してできた配列を返す |
implode($d, $ary) | $aryを$dで連結してできた配列を返す |
unset($ary[$key]) | $aryの$keyに対応する要素を削除する |
in_array($val, $ary) | $aryに値が$valと一致するものがあるかを調べ、存在する場合はtrueを返す |
array_key_exists($key, $ary) | $aryにキーが$keyと一致するものがあるかを調べ、存在する場合はtrueを返す |
array_search($val, $ary) | $aryから値が$valと一致するものがあるかを調べ、存在する場合は対応するキーを返す |
array_reverse($ary) | aryの順序を逆にした配列を返す |
array_splice($ary, $offset[, $len[, $rep]]) | $aryの一部($offsetから$len)を削除し、別の配列$repの要素で置換する |
配列の並べ替え
PHPには配列を並べ替えるための関数がいくつか用意されているので、以下の表で紹介します。
関数 | 役割 |
---|---|
sort($ary) | 配列の値を昇順に並べ替える |
asort($ary) |
連想配列の値を、キーと要素の関係を保持したまま昇順に並べ替える |
ksort($ary) |
配列のキーを、キーと要素の関係を保持したまま昇順に並べ替える |
rsort($ary) |
配列の値を降順に並べ替える |
arsort($ary) |
連想配列の値を、キーと要素の関係を保持したまま降順に並べ替える |
krsort($ary) |
配列のキーを、キーと要素の関係を保持したまま降順に並べ替える |
上の表のほとんどの関数は値を基準として並べ替えを行いますが、ksort()関数とkrsort()関数のみキーを基準に並べ替えを行います。
多次元配列
「次元」とは配列の「[]」で表現されるレベルのことをいい、複数の「[]」から構成される、すなわち、2次元以上の配列を多次元配列と呼びます。
多次元配列の作成は、配列の値に配列を格納することでできます。
<多次元配列の作成例>
// 数値配列の場合
$arrays[''] = '';
// 処理内容を記述
}
// 連想配列の場合
foreach ($配列名 as $キーの一時保存変数名 => $値の一時変数名) {
// 処理内容を記述
}
以下
終わりに
この記事はこれらの本を参考にしています。
今回は「配列の操作」について勉強しました。
次回は、「関数とファイル」についてです。お楽しみに〜
# To be continued