Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
@derasado
Revisions
Report this question
Subscribe question
Help us understand the problem. What is going on with this question?
Q&A
Closed

PHPのechoの挙動について

解決したいこと

PHPのechoの挙動について知りたい

発生している問題・エラー

出ているエラーメッセージを入力
または、問題・エラーが起きている画像をここにドラッグアンドドロップ

### 該当するソースコード
```言語名PHP
echo '読書ログを登録して下さい' . PHP_EOL;
echo '書籍名:';
$bookTitle = fgets(STDIN);  //ここで一回echoが止まる

echo '登録が完了しました' . PHP_EOL  . PHP_EOL; //ここから下のechoがなんで一回表示されないか疑問です。

echo '読書ログを表示します' . PHP_EOL;
echo  '書籍名:' . $bookTitle . PHP_EOL;

自分で試したこと

ターミナルの方で、書籍名:の部分を記入すると登録が完了しました。から下のechoが出力されるのですが
なぜそのような挙動なのか教えて頂きたいです。

宜しくお願い致します。

0
1
Answer

結論 echoではなくてfgets(STDIN)の処理待ちで止まっています

$bookTitle = fgets(STDIN);  //ここで一回echoが止まる

上記のfgets(STDIN)の部分が、「キーボードからの入力を受け付ける」という意味です。
キーボードからの入力を変数に代入する為に、入力する値が確定するまで次には進みません。

蛇足ですが、JavaScriptには似たようなものにpromptがあります。
こちらもユーザーが何かを入力するまで後の処理が行われません。

0
ご回答いただきましてありがとうございます。
検証していたのですが、やはりですか・・・

すっきりしました!
ありがとうございました!
Help us understand the problem. What is going on with this answer?
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login