こんにちは。PHP技術者認定機構 CTOの古庄道明です。
今日もPHP8初級試験の模擬問題と解説を紹介します。
以下を解いて出題のイメージと知識を補っていただけると幸いです。
問題
配列のソートに関する次の記述のうち正しいものはどれか。
選択肢
選択肢1
sort()関数は配列をキーで降順にソートする。
選択肢2
sort()関数はソートの時に配列のキーをリセットするため、連想配列にだけ使用すべきである。
選択肢3
asort()関数は配列を要素の値で昇順にソートする。この関数は連想配列のキーと値を保持する。
選択肢4
ksort()関数は配列をキーで昇順にソートする。この関数はキーと値のペアを保持しない。
選択肢5
arsort()関数は配列を要素の値でソートする。最小の値が先頭となり、以降の要素が降順に並ぶ。
回答と解説
問題は「配列について」です。配列の中でも、ソートについての内容となります。
PHPでは、配列のソートはたくさんの種類があります。
https://www.php.net/manual/ja/array.sorting.php
に一通り記載があるので、確認をしておくとよいでしょう。
選択肢1 にある sort()関数は、「値を基準にソート」「キーと値の相関関係を維持しない」「昇順」のソートになります。
選択肢には「キーで降順にソート」とあるため、こちらは間違いになります。
選択肢2は選択肢1 と同様にsort()関数について書かれていて、選択肢には「ソートの時に配列のキーをリセットするため、連想配列にだけ使用すべきである」とあります。
「ソートの時に配列のキーをリセットする」のは正しいですが、連想配列に用いると「元のキーが失われてしまう」ので、適切ではありません。
例えば、以下のコードを動かしてみるとよいでしょう。
$arr = [
'z' => 1,
'y' => 3,
'x' => 2,
];
sort($arr);
print_r($arr);
こちらは、こうなります。
Array
(
[0] => 1
[1] => 2
[2] => 3
)
選択肢3 の asort()関数は、「値を基準にソート」「キーと値の相関関係を維持する」「昇順」のソートになります。
選択肢には「配列を要素の値で昇順にソートする。この関数は連想配列のキーと値を保持する」とあり、こちらは正しい記述です。
選択肢4 の ksort()関数は、「キーを基準にソート」「キーと値の相関関係を維持する」「昇順」のソートになります。
選択肢には「配列をキーで昇順にソートする。この関数はキーと値のペアを保持しない」とあります。
前半の「キーで昇順にソート」は正しいですが、後半の「キーと値のペアを保持しない」が誤っているため、全体としては間違いになります。
選択肢5 の arsort()関数は、選択肢3 と近しい動きをしますが、ソート順が「降順」となります。
選択肢の「以降の要素が降順に並ぶ」はよいのですが、その前にある「最小の値が先頭となり」は、この部分だけをみると「昇順のソート」の並びになるため、全体としては間違いになります。
正解は選択肢3です。
PHP8初級試験と公式問題集に興味がある方は、以下のページをご覧のうえ、この機会に是非受験ください。
PHP8初級試験
https://www.phpexam.jp/summary/novice8
公式問題集:PHP8技術者認定初級試験公式問題集A
Kindle版 https://amzn.asia/d/1bS88y9
ペーパーバック版 https://amzn.asia/d/3P3Izeu
また、試験対策セミナーは毎月開催しています。興味がある方は以下のページをご覧いただき是非セミナーにもご参加ください。(フォローいただけるとセミナーのご案内が届くようになります)
PHP技術者認定機構の公式Peatixグループ
https://peatix.com/group/43424
www.phpexam.jp

