採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

標準入力

テクノロジ系 / hello (PHP の最小単位)

標準入力

Lesson 1 / Chapter 8

標準入力とは

  • ターミナルやファイルから プログラムに値を渡す 仕組み
  • これまでは echo で出すだけだった
  • 入力を受け取れると 対話するプログラム が書ける

実行イメージ:

$ echo "太郎" | php hello.php
こんにちは 太郎 さん

fgets(STDIN) で 1 行読む

<?php
$line = fgets(STDIN);
echo $line;
  • STDIN = 標準入力
  • fgets(STDIN)改行までの 1 行 を読み取る
  • 読んだ結果は 文字列 として変数に入る

改行が残るので trim() で取る

<?php
$line = fgets(STDIN);
echo "[" . $line . "]\n";       // 改行残り
echo "[" . trim($line) . "]\n"; // 改行除去

入力が 太郎 のとき:

[太郎
]
[太郎]
  • fgets末尾の改行を含めて 返す
  • trim() で改行や前後の空白を取り除く
  • 入力を扱う時はほぼ毎回 trim() する

数値として計算したい時は (int) で変換

<?php
$line = fgets(STDIN);
$n = (int) trim($line);
echo $n + 1;
echo "\n";

入力が 5 のとき出力は 6

  • fgets で読んだ値は 文字列
  • "5" + 1 でも一応動くが、明示的に (int) で変換する
  • (int) は「整数に直して」という意味

複数行の入力を読む

<?php
$a = (int) trim(fgets(STDIN));
$b = (int) trim(fgets(STDIN));
echo ($a + $b) . "\n";

入力:

3
5

出力:

8
  • fgets(STDIN)入力の行数だけ 呼ぶ
  • 各行を trim() して (int) で数値化

このチャプターでできるようになること

fgets(STDIN) で 1 行入力を読める

trim() で改行を取り除ける

(int) で文字列を整数に変換して計算できる

✅ 複数行の入力を順に読める

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

ドリル 02 — 入力された 2 つの整数を足す

問題

標準入力で 2 行 受け取り、それぞれを整数として読み、合計を出力してください。

入力例:

3
5

期待される出力:

8

採点

php scripts/grade.php topics/hello/ch08-input/drill/02-add-input/

ヒント

  • fgets(STDIN)2 回 呼んで 2 行読む
  • 各行を trim() して (int) で整数に変換する
  • $a + $b の結果を "\n" を付けて出力する