PHP

超初心者のためのPHP勉強講座【第4回:配列の操作】

この記事はこんな人にオススメです
  • PHPが気になっている人
  • PHPを勉強し始めたばかりの人
  • PHP初級技術者認定試験を受験しようと思っている人

こんにちは〜、Toyです!

本日もPHP技術者認定初級試験に向けた勉強を行っていきたいと思います。

前回は、『ロジック〜判定と繰り返し〜』について勉強しましたね。

https://tee-916.com/2019/10/01/php7_exam_measure3/

本日のテーマは『配列の操作』についてです。

配列

配列は関連する複数の値を保持することのできる容器です。配列を管理するためにつける配列名の前には、変数名と同様、必ず$」をつけます。また、変数名同様の命名規則も適用されます。

  • 先頭の文字はアルファベット、またはアンダースコア「_」
  • 2文字目以降は、アルファベット数字アンダースコア「_」のみ

配列は複数の要素から成っており、各要素は添字(キー:key)と値(バリュー:value)を保持しています。1つのキーに対して、1つの要素が存在します。配列とは

配列のキーには任意の文字列や数値を指定することができ、特に文字列をキーとする配列は連想配列と呼ばれています。

また、配列の値には数値や文字列、true、false、その他の配列など様々な値を指定することができます。

elic
elic
文字列を指定する場合はキーを引用符「’」で囲まないといけないんだって!
toy
toy
ほんとだ !「banana」も「」で囲まれてるね!

配列の作成

配列の作成方法は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);

このプログラムの出力結果は

array(3) {
  [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);

出力結果は

array(3) {
  [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

ABOUT ME
Toy
Toy
大学院に通ってましたが新しい夢に向かって1年休学中です。 夢は就職せずにフリーランスとして生きていくこと! 好き:Elic、料理、折り紙、プログラミング(C、python、etc.)、webサイト制作。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です