【基礎知識】PHPの配列を色々操作してみる(PHP8技術者認定初級試験)

こんにちは、穂苅と申します。
このコラムでは、私が PHP8 技術者認定初級試験のための公式問題集(PHP8 技術者認定初級試験公式問題集)で学習した内容やポイントを取り上げて解説をしていくものです。
P194〜205 のChapter 19「ビルトイン関数」の配列操作を学習してみました。

目次

配列と配列操作とは?

PHP の学習で、ハードルの1 つが配列です。ですが、この配列を理解することはプログラミングを習得する上で必須です。
配列は、Array という英単語で使われています。そのためPHP にも、array というキーワードを使ったものが多くでてきます。PHP を含めたプログラミングは、データを適切にまとめて処理をさせ、変数として返すという挙動を取ります。その際には適切で効率的なデータのまとめ方を行うことがその後の処理に影響してきます。つまり、配列は、複数の要素を1 つの変数にまとめて格納するデータ構造であると言えます。(※1)
(※1)https://www.php.net/manual/ja/language.types.array.php
例えば、PHP マニュアルに載っているコードを見てみるとわかりやすいです。

<?php
$array = array(1, 1, 1, 1, 1, 8 => 1, 4 => 1, 19, 3 => 13);
print_r($array);
?>

出力:
Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 13
[4] => 1
[8] => 1
[9] => 19
)

変数array に配列の形でデータが入っています。キーが0 から始まるのは基礎知識ですが、[3]の値13 については、後で上書きされます。キーが3 の値は配列の最後の 3 => 13 として上書きされますので、 [3]=> 13 となります。また、19 は自動でキーが振られますので最後のキー9 に19 が値として入ります。

それでは、array を使ったいくつかの配列を試してみたいと思います。ここから配列を作る際は、array()ではなく[]を使って作ります。どちらのパターンでも配列を作ることができます。

ちなみに、すべて配列は変数名shikoku に4 つの県を入れています。

【パターン1】

<?php
$shikoku = [‘高知県’, ‘愛媛県’, ‘徳島県’, ‘香川県’];
print_r(array_slice($shikoku, 1, 1));
?>
出力:
Array
(
[0] => 愛媛県
)

【パターン1:解説】

array_slice(※1)という配列の一部の要素を切り取り、配列で返す関数があります。文法としては以下
のような形です。
(※1)https://www.php.net/manual/ja/function.array-slice.php

array_slice(
array $array,
int $offset,
?int $length = null,
bool $preserve_keys = false
): array

第1 引数の$array は対象となる配列。第2 引数の$offset は、取り出し開始位置のインデックス。第3 引数$length は任意ですが、取り出す要素の数。第4 引数の$preserve_keys は、true にすると元のキーを保持し、false だと0 からの連番になるというものです。(デフォルトはfalse)
それで見ると、$shikoku という配列を対象として、インデックス(キー)1 から1 つ取り出すという指示になります。ですので、取り出した「愛媛県」をインデックス(キー)0 からの連番の配列で返す結果が出たということです。
なんとなくイメージができますでしょうか。

【パターン2】

<?php
$shikoku = [‘高知県’, ‘愛媛県’, ‘徳島県’, ‘香川県’];
array_pop($shikoku);
array_pop($shikoku);
echo array_pop($shikoku);
?>

出力:愛媛県

【パターン2:解説】

array_pop(※2)は、配列の一番後ろの要素をポップ(除去)してその値を返す関数です。引数に与えた配列を変更してしまう「破壊的」関数ともいえます。
つまり、最初のarray_pop($shikoku)で、「香川県」が除去され、次のarray_pop($shikoku)で、「徳島県」が除去されます。そのうえで、「愛媛県」を除去しつつその値を表示するecho をしているため、出力としては「愛媛県」となります。
(※2)https://www.php.net/manual/ja/function.array-pop.php

【パターン3】

<?php
$shikoku = [‘高知県’, ‘愛媛県’, ‘徳島県’, ‘香川県’];
echo array_search(‘愛媛県’, $shikoku);
?>

出力:1

【パターン3:解説】

array_search(※3)は、配列の要素を検索し、最初に見つかった要素のキーを返し、見つからなければ
false を返すというものです。ですので、このコードだけでは、「愛媛県」のキーである1 が出力される
ということになります。
(※3)https://www.php.net/manual/ja/function.array-search.php

【パターン4】

<?php
$shikoku = [‘高知県’, ‘愛媛県’, ‘徳島県’, ‘香川県’];
list($香川県, $徳島県, $愛媛県) = $shikoku;
echo $愛媛県;
?>

出力:徳島県

【パターン4:解説】

list(※4)を使った構文です。配列の値を変数に代入し、最後にそのうちの1 つを出力しています。
list を使っているので、実際のプログラムでは、以下のようになっています。ただ、今回の例ですと非常に紛らわしいので普段のプログラミングの際には留意いただければと思います。
(※4)https://www.php.net/manual/ja/function.list.php

$shikoku[0]の値が’高知県’になり、それが$香川県に代入。
$shikoku[1]の値が’愛媛県’になり、それが$徳島県に代入。
$shikoku[2]の値が’徳島県’になり、それが$愛媛県に代入。
そのうえで、echo $愛媛県としているため、出力は、徳島県になるわけです。
サンプルケースを4 つ紹介いたしましたが、配列操作のイメージがつきましたでしょうか。array に関する関数はとても多くありますので、利用用途に応じて駆使してみてください。事前にPHP の公式マニュアルなどを見て試しに書いて実行してみることをおすすめします。

PHP8技術者認定初級試験で、正しいPHPの理解を

今回はPHP の配列操作に関して、例を4 つ使って学習をしてきました。
次回以降もPHP で学習した内容をシェアしていきますので、よろしくお願いいたします。また、PHP の学習やエンジニアになるためのマイルストーンとして、PHP 試験はおすすめです。PHP8技術者認定初級試験はPHP を扱うあらゆる方にとって有益な試験になるはずですので、ご興味がある方はぜひチャレンジしてみてください。
試験ページ: PHP8 初級試験

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次