0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【標準入力・標準出力】【PHP】paizaスキルチェックのサンプルコードを理解するのに必要な知識

Posted at

はじめに

久しぶりにpaizaのスキルチェックをPHPで受けようと思い立ったんですが、忘れている事が多々あったので備忘録を兼ねてPHPのサンプルコードを元にチートシートを作成しました。

標準入力・標準出力

ここの概念はスキルテストを行う上で重要ではありません。
スキルテストで求められていることは、後述するSTDINからfgetsメソッドで値を取得して、問題(テスト)を解いて、答えをechoで出力することです。
厳密な定義を調べるのに時間を割くのはやめましょう。
タイトル詐欺かと言われれば返す言葉がありません。

サンプルコード

入力される値
2
2 5
3 4
期待する出力
hello = 2 , world = 5
hello = 3 , world = 4
PaizaSampleCode
<?php
$input_line = trim(fgets(STDIN));
for ($i = 0; $i < $input_line; $i++) {
    $s = trim(fgets(STDIN));
    $s = str_replace(array("\r\n","\r","\n"), '', $s);
    $s = explode(" ", $s);
    echo "hello = ".$s[0]." , world = ".$s[1]."\n";
}
?>

fgets

引数に指定したファイルポインタから1行取得する。
※サンプルコードでは「STDIN=ファイルポインタ」です。
※読みこむデータが無くなった場合はfalseを返します。

fgets(STDIN)
// 2
fgets(STDIN)
// 2 5
fgets(STDIN)
// 3 4
fgets(STDIN)
// false

trim

文字列の先頭および末尾にあるホワイトスペースを取り除く

下記のように文字列の間に存在するホワイトスペースは削除されません

trim("   2 5   ")
// 2 5
// ※2と5の半角スペースは削除されていない

str_replace

第三匹数の文字列に存在する、第一引数を第二引数に変換する。
第一引数を配列にすることで複数指定も可能。

str_replace(array("\r\n","\r","\n"), '', '2 5')
// 文字列'2 5'の中に改行コードが存在すれば空文字に変換する(つまり改行コードの削除)

explode

第二引数を第一引数で区切った文字列を配列に格納して返却する

explode(" ", '2 5')
// 空文字で区切って格納するので'2'と'5'
// [2,5]

文字列連結

文字列をドットで連結出来ます。
変数も連結させることが出来ます。
当然、変数はダブルクウォートで囲む必要はありません。

最後に"\n"が無ければ、改行されずに一行で下記のようになってしまいます。
hello = 2 , world = 5hello = 3 , world = 4
サンプルコードで期待する出力は下記なので"\n"が必要です。
hello = 2 , world = 5
hello = 3 , world = 4

$s = [2,5]
"hello = ".$s[0]." , world = ".$s[1]."\n"
// hello = 2 , world = 5

最後に

どれも基礎的な内容ですが、スキルテストは実務では意外と使用頻度の低いメソッドや、意識することのない標準入力・標準出力といった概念が出てきます。
久々にスキルテストをやろうと思ったけど、ド忘れしたな〜って時に使っていただければ幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?