一般社団法人 ITエンジニア育成検定協会
—
by
PHP技術試験 公式模試問題集
1 / 70
カテゴリー: PHP
次のコードの出力結果として正しいものを選択してください。
PHPでは特殊な例として文字列 `”0″` は偽(false)と評価されます。一方、空でない `”foo”` は真(true)です。よって `false`、改行、`true` の順に出力されます。
2 / 70
`”2″ + 3` は数値演算のため数値へ変換され、結果は整数 `5` になります。`gettype(5)` は `”integer”` を返します。
3 / 70
`global $base` により、関数内から外側の `$base` を参照できます。`7 + 3 = 10` が出力されます。
4 / 70
`static` で宣言したローカル変数は関数をまたいで値が保持されます。1回目は `1`、2回目は `2` が出力されます。
5 / 70
`+` は数値演算のため文字列が数値に変換され `3+4=7`。`.` は文字列連結演算子のため `”34″` になります。
6 / 70
シングルクォートでは変数は展開されないため連結で値を埋め込みます。ダブルクォートでは変数が展開されます。
7 / 70
`define` と `const` で定義した定数はどちらも参照できます。`2 + 3 = 5` が出力されます。
8 / 70
クラス定数は `ClassName::CONST` で参照できます。`App::NAME` と `App::VERSION` を改行区切りで出力しています。
9 / 70
PHPでは文字列 `”0″` は偽とみなされます。そのため `expr ?: alt` は `alt` が選ばれ、`”guest”` が出力されます。
10 / 70
最初の `($n ?: 5)` は `$n` が偽(null)のため `5` を返します。次の `?: 9` は左辺が真(5)なので `5` がそのまま出力されます。
11 / 70
連想配列と多次元配列のアクセスです。`$animals[‘bird’][‘sound’]` は `tweet`、`$animals[‘cat’][‘legs’]` は `4` を返します。
12 / 70
連想配列の要素アクセスと foreach でのキー・値の取り出しです。定義順に出力されます。
13 / 70
`array_key_exists` はキーが存在するか、`isset` は値が null でないかを確認します。ここでは `quantity` が存在し、`price` は未定義です。
14 / 70
`array_key_exists` と `isset` の基本的な使い分けです。`weight` は未定義のため `isset` は偽になり、「Weight unknown」を出力します。
15 / 70
`array_push` で末尾に追加し、`array_pop` で末尾を取り出します。`array_slice` は範囲を抜き出し、`implode` で連結しています。
16 / 70
`array_pop` で取り出されるのは末尾の `4`。残り `[1,2,3]` のインデックス1以降は `2-3` です。
17 / 70
`substr($text, 4, 3)` は `”two”`、`explode` で分割した配列を `implode(‘:’, …)` で `one:two:three` と連結します。
18 / 70
`explode(‘|’, $text)` で `[“alpha”,”beta”,”gamma”]`、`substr(“gamma”,1)` は `”amma”`。`implode(‘;’, …)` で `alpha;beta;gamma` を出力します。
19 / 70
`==` は型変換して比較するため `”0″ == 0` は真で `A`、`===` は型も比較するため文字列と整数は異なり `D` になります。
20 / 70
`===` は型と値の両方を比較します。文字列 `”123″` と整数 `123` は異なるため `”diff”` が出力されます。
21 / 70
`is_null(null)` は真で `null` を出力し、空配列は `empty([])` が真で `empty` を出力します。
22 / 70
`isset(null)` は偽のため `not set`。空配列にキー `’x’` は存在しないため `array_key_exists(‘x’, [])` は偽で `no` になります。
23 / 70
コンストラクタで受け取った値をプロパティに代入し、そのまま参照して出力しています。
24 / 70
第二引数を省略したため `role` はデフォルトの `”guest”`、`name` は `”Taro”` です。
25 / 70
静的メソッドは `Class::method`、インスタンスメソッドはオブジェクトから呼び出します。それぞれ `5` と `8` が出力されます。
26 / 70
静的メソッド `sub` は `9-4=5`、インスタンスメソッド `pow2(3)` は `9` を返します。
27 / 70
子クラスでオーバーライドし、`parent::hello()` の戻り値に文字列を連結しています。
28 / 70
`parent::greet()` の結果 `”Hi”` に `” there”` を連結し、`”Hi there”` を出力します。
29 / 70
`private` なプロパティはクラス外からアクセスできませんが、公開メソッド経由で値を取得できます。
30 / 70
`protected` はクラス外から直接は参照できませんが、クラスの公開メソッド経由で取得できます。
31 / 70
`spl_autoload_register` で未定義クラスを参照した際に自動的に読み込み・出力しています。`new MyClass()` のタイミングで `”Loading MyClass”` が表示されます。
32 / 70
未定義クラス `Sample` の参照時にオートローダが呼ばれ、クラスを定義しつつクラス名を出力しています。
33 / 70
未定義プロパティへの代入・参照をマジックメソッドで補足し、内部配列に保存・取得しています。
34 / 70
`__toString()` はオブジェクトが文字列に変換される際の表現を返します。`echo` 時に `”Alice”` が表示されます。
35 / 70
引数を省略するとデフォルト値 `”Guest”` が使われます。2回目は `”Tom”` を渡しているためそれが表示されます。
36 / 70
第二引数を省略すると `$b` は `10` が使われ、`5 + 10 = 15` を返します。
37 / 70
`…$nums` で可変個の引数を受け取り、`array_sum` で合計しています。
38 / 70
最初の引数を区切り文字として受け取り、残りの可変個引数を `implode` で連結しています。
39 / 70
`use ($greeting)` で外側スコープの変数をクロージャに取り込み、関数内で利用しています。
40 / 70
`use (&$n)` で参照として取り込み、関数呼び出しごとに `$n` をインクリメントして値を返しています。
41 / 70
`array_map` にコールバックとして組み込み関数 `strtoupper` を渡し、各要素を大文字に変換しています。
42 / 70
`usort` に無名関数を渡して比較ルール(降順)を定義し、並び替えています。
43 / 70
引数・戻り値ともに整数型を指定し、幅と高さの積を返しています。
44 / 70
戻り値を `float` に指定しているため、小数として `3.0` を出力します(実際の表示は環境により `3` と見える場合もあります)。
45 / 70
`1 + 2 + 3 + 4 = 10` を再帰で計算しています。
46 / 70
フィボナッチ数列 `0,1,1,2,3,5,…` に従い、`fib(4)` は `3` です。
47 / 70
`$score=85` は `>=80` を満たし `>=90` は満たさないため、`elseif` 節が実行され `”B”` が出力されます。
48 / 70
`$n=-1` は `($n<0)` が真のため `"minus"` が出力されます。
49 / 70
`$day=5` に一致する `case 5` が実行され、`break` で抜けるため `”Friday”` が出力されます。
50 / 70
`$val` は `”b”` のため `case “b”` が実行され `”B”` を出力します。
51 / 70
外側の `$i` が行、内側の `$j` が列として増加し、行優先で出力されます。
52 / 70
`$i` は `1,3` と増加し、`1+3=4` を加算した合計が出力されます。
53 / 70
`foreach` は配列を定義順で走査します。各要素を改行付きで出力しています。
54 / 70
連想配列のキーと値を `foreach ($arr as $key => $value)` で取り出して出力しています。
55 / 70
`$n==2` は `continue` でスキップ、`$n==4` で `break` によりループ終了。出力は `1` と `3` です。
56 / 70
`$i==2` はスキップ、`$i==4` でループ終了。改行なしで `1` と `3` が連続して出力されます。
57 / 70
`f(5)` は `10/5=2`。`f(0)` で例外が投げられ `catch` に移って `”error”` を出力、最後に `finally` で `”done”` が出力されます。
58 / 70
`calc(9)` は `3`、`calc(-1)` は例外で `catch` に移り `”err”`、最後に `finally` で `”done”` を出力します。
59 / 70
名前空間 `AppLib` に定義したクラスをグローバル名前空間から完全修飾名 `AppLibUtil::hi()` で参照しています。戻り値は `”hi”` です。
60 / 70
`use` とエイリアス `as` を使ってクラスをインポートし、静的メソッドを呼び出しています。`”abc”` の長さは `3` です。
61 / 70
`use Logger` により `Service` クラスに `log` メソッドが取り込まれ、`”ok”` を出力します。
62 / 70
`B::who insteadof A` により同名メソッドの競合を B の実装に解決し、`”B”` が出力されます。
63 / 70
`yield` で `2,4` を逐次生成し、`foreach` で順に出力しています。
64 / 70
`yield from` で別のジェネレータの全要素を委譲し、その後に `3` を追加して出力しています。
65 / 70
厳密な型指定で整数を受け取り、`2+3=5` を出力します。
66 / 70
`strict_types=1` のため、`”3″` を `int` に暗黙変換せず `TypeError` が発生します。
67 / 70
PHP 8 の属性(アトリビュート)を定義し、リフレクションで取得してコンストラクタ引数 `text` の値を出力しています。
68 / 70
メソッドに付与した属性を `ReflectionMethod` で取得し、インスタンス化して値を参照しています。
69 / 70
UTF-8 では `”こんにちは”` は3バイト×5文字で `strlen` はバイト数の `15` を返し、`mb_strlen` は文字数の `5` を返します。
70 / 70
UTF-8 では `”テスト”` は3バイト×3文字で `strlen` は `9`、`mb_strlen` は文字数 `3` を返します。
あなたのスコアは
平均スコアは 0%