LoginSignup
2
0

More than 5 years have passed since last update.

PHPを学習してみて最初につまづいたこと

Posted at

何につまづいたのか ー 入力値の取得

試験勉強を兼ねて試しに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")する場合には有効。
  ただし改行コードは複数種類があるので注意が必要。

2
0
2

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
2
0