PHPでの標準入力の例

初心者のコードなのでもっと良いコードを見たい方はブラウザバックを

例その0

intが3つぐらい並んでいるパターン

3 4 5

少ないので、地道に以下のように一つずつ拾うのでよさそうです。

fscanf(STDIN, "%d %d %d", $A, $B, $C);
echo $A; #3
echo $B; #4

例その1

intがまず出てきて、そのあとそのintstring要素が多めに出てくるパターン

5
banana apple orange kiwi peach

多めに出てくると面倒なので、リストに格納することにします。

<?php
fscanf(STDIN, "%d", $N);
$S = array();
for ($n=0; $n<$N; $n++){
  fscanf(STDIN, "%s", $tmp);
  $S[] = $tmp;
}

例その2

intが出てきて、そのあとそのint分のint要素が出てくるパターン

100
1 2 3 4 ...... 100

これも多めに出てくると面倒なので、リストに格納します。

今回はexplode関数を使ってみます。ですが、explodeだとstringのまま読み込まれてしまいます。

なので最初すべてstringとして読み取って、intvalで読み取るしか見つかりませんでした。。。

<?php
fscanf(STDIN, "%d, $N);
$X = explode(" ", fgets(STDIN));
$X = array_map('intval', $X);

explodeよりさっきの例のほうが便利かもしれません。

# さっきの例だと。。。
fscanf(STDIN, "%d", $N);
$S = array();
for ($n=0; $n<$N; $n++){
  fscanf(STDIN, "%d", $tmp);
  $S[] = $tmp;
}

phpの標準入力についてもうすこし研究してみます。以上。