何につまづいたのか ー 入力値の取得
試験勉強を兼ねて試しにPHPを書いてみようと思い、
paizaを用いて問題を解いてみることにしました・・・・・
しかし、入力値が複数行の時に2行目の値が取れない・・・・・・という事態に。
実際に書いたコードは以下です。
$input = fgets(STDIN);
$array = explode("\n", $input);
\$array[0]は値が入っているのに、\$array[1]に2行目の値が入っていないんです。
何がダメだったのか
$allay = explode(' ', $input);
でスペース区切りで配列に文字列を格納できたので、
その要領で"\n"区切りで配列に格納できると勘違いしていたのが間違いでした。。。。
さらに元をたどると、
\$input = fgets(STDIN);
上記を勝手に全文取得してくると思っていたのですが、
1行単位でしか取得してくれない、とのこと。。。
結論
以下のように描けばよかったみたいです。
ややこしく考えすぎてしまっていたようです。
$input1 = fgets(STDIN);
$input2 = fgets(STDIN);
これで複数行の入力値取得ができます。
ちなみに改行コードが入ってしまうので、
echo \$input1.\$input2;
のように出力したい場合はtrim()を使う方が良さそうです。
$input1 = trim(fgets(STDIN));
$input2 = trim(fgets(STDIN));
意図しない改行コードが入ってしまう可能性があるため、
明示的にtrim()で文字だけ取得してくる方が個人的に無難そうな気がしました。
まとめ
\$input = fgets(STDIN);
→1行取得
\$array = explode("\n", $input);
→1行で書かれている中で記号区切り("\n")する場合には有効。
ただし改行コードは複数種類があるので注意が必要。