こんにちは。PHP技術者認定機構 CTOの古庄道明です。
今日もPHP8初級試験の模擬問題と解説を紹介します。
以下を解いて出題のイメージと知識を補っていただけると幸いです。
問題
次のコードの実行結果として正しいものはどれか。
$n = 2;
$p = 3;
++$n;
$p *= 2;
$a = "$n, $p";
--$n;
$p *= 3;
$b = "$n, $p";
print $a . ' / ' . $b;
選択肢
選択肢1
3,6 / 1, 9
選択肢2
3, 6 / 2, 18
選択肢3
3,9 / 1, 9
選択肢4
3, 9 / 2, 27
選択肢5
3, 9 / 2, 279
回答と解説
問題は「複合演算子と加算子/減算子について」です。
複合演算子については、まず公式マニュアルを読んでおくとよいでしょう。
https://www.php.net/manual/ja/language.operators.assignment.php
「代入演算子」のページですが、この中に複合演算子についての記述があります。
加算子/減算子についても、まず公式マニュアルを読んでおくとよいでしょう。
https://www.php.net/manual/ja/language.operators.increment.php
複合演算子ですが、例えば
$i = $i + 1;
は、
$i += 1;
と書くことができます。後者を「複合演算子」といいます。
また、加算子/減算子は、変数の値を+1または-1します。
(加算子/減算子には前置と後置がありますが、今回のように単独で使われている場合は、あまり気にする必要はありません)
$i = 10;
++$i; // 加算子: +1する
--$i; // 減算子: -1する
ここまでを前提に、問題文をひもといていきます。
$n = 2;
$p = 3;
で、まず変数に値を代入しています。
++$n;
があるので、$nに1が加算されて、3になります。
$p *= 2;
は
$p = $p * 2;
と等価なので、3*2で6が代入されます。
$a = "$n, $p";
なので、$aには”3, 6″となります。
--$n;
があるので$nは2になり
$p *= 3;
があるので 6*3で18になり
$b = "$n, $p";
なので、$bには”2, 18″となります。
最後に
print $a . ' / ' . $b;
ですので、
3, 6 / 2, 18
となります。
選択肢2が正しいため、解答は2になります。
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

