質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

Q&A

2回答

2375閲覧

PHP 標準入力について

yukinari302

総合スコア19

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

0グッド

0クリップ

投稿2020/12/10 10:37

仕様

PHPファイルはコマンドラインから実行してください。
仕様
「あなたの名前を教えてください。」出力

入力 ex) Yamada

「Yamadaさんあなたの年齢は何歳ですか?」出力

入力 ex) 20

「Yamadaさん(年齢:20)、ご登録ありがとうございます!」出力

プログラム終了 -->

PHP

1<?php 2 3echo 'あなたの名前を教えてください。'; 4echo '20'; 5 6while(!feof(STDIN)){ 7 $line = trim(fgets(STDIN)); 8 var_dump($line); 9} 10 11 12$stdin = trim(fgets(STDIN)); 13var_dump($stdin);

コマンドラインから上記コードをPHPファイルで実行すると、

あなたの名前を教えてください。20

と連続して出力されてしまいます。

期待値としましては、
仕様のような出力と入力を繰り返し、最終的にプログラミングを終了させたいです。

PHPの標準入力は今回始めて学びまして、
調べた結果、

$stbin = trim(fgets(STDIN));

などの標準入力を使って値を受け取る処理の仕方や、
今回のようにwhile文を使って複数行の値を取得する書き方は理解することができました。

しかしコマンドラインとやりとりするような出力と入力を繰り返す書き方がわかりませんので教えていただけると助かります。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

全体を while(true){} のなかに入れて、特定の入力で exit するとかですかね。
exit できないと無限に動くので止め方が分かってからやったほうがいいと思います。

投稿2020/12/13 04:21

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

出力直後に改行コード入れればよいのでは。
__PHP_EOL__

投稿2020/12/10 10:41

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/12/10 10:42

>コマンドラインとやりとりするような出力と入力を繰り返す書き方がわかりません 調べて出てきそうな気がします。 何かしら調べたのなら質問内容に追記を。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問