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

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

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

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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

Q&A

解決済

3回答

13127閲覧

ターミナルでPHPを実行したときに改行したい

smnsmn

総合スコア175

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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

0グッド

0クリップ

投稿2016/03/06 15:50

hoge.php

PHP

1$row = (りんご, みかん, ぶどう, さくらんぼ); 2 3foreach($row as $hoge){ 4 echo $hoge; 5} 6

上記を、ターミナルでphp hoge.phpとすると、ターミナルに
りんごみかんぶどうさくらんぼ
のように改行されずに表示されてしまいます。<br>を付けてみましたがだめでした。

初歩的な質問ですが、ご教授頂けますと幸いです。mm

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

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

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

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

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

guest

回答3

0

ベストアンサー

  • 文字列は"または'で括りましょう.
    前者には改行エスケープシーケンス\nを展開する機能があります.
  • PHP5.4以降では array() より [] のほうがベターです.
    JavaScriptやRubyの配列記法と同じでシンプルに書けます.

php

1<?php 2 3$row = ['りんご', 'みかん', 'ぶどう', 'さくらんぼ']; 4 5// お好きな書き方でどうぞ 6foreach ($row as $col) { 7 echo "$col\n"; 8 echo "{$col}\n"; 9 echo $col . "\n"; 10 echo $col . PHP_EOL; 11}

なお,ターミナルの標準出力の代わりにエラー出力に吐き出したい場合は,
echo $var; の代わりに fwrite(STDERR, $var); としてください.

投稿2016/03/06 18:26

編集2016/03/06 18:31
mpyw

総合スコア5223

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

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

smnsmn

2016/03/07 03:17

皆様ご回答ありがとうございました!!mm 勉強になりましたmm 普段ブラウザからしか確認をしないので、 \nの存在を忘れておりました。 たくさんの書き方パターンもありがとうございます。 $rowの部分も適当な例を書いたらツッコミどころが多かったですね;; ありがとうございました!
guest

0

他の人が回答してくれていますので、私は直接の回答ではなく、背景について書きます。
PHP に限らずプログラミング言語などにおいて "\n" が表すのは LF (Line Feed) という文字コードで、次の行に移る、という意味です。他に "\r" で表される CR (Carriage Return) があって、これは行の先頭に戻る、という意味です。昔、タイプライターという機械があったのはご存じですか。今のキーボードのようになっているキーを叩くと紙にバシンッとその文字が打ち込まれて一文字分、紙が送られます。行の終わりのほうになったら新たな行から書き始めるために紙を送るわけですが、そのときには、次の行に移る、という縦方向の動きと、印字位置を先頭に戻す、という横方向の動きが行われるわけです。(youtube とかで「タイプライター キャリッジ 動作」とかで検索すると実物の動きを見られる動画とか観られると思います。)
で、コンピュータの世界で「改行」をどう表現しようか、というところで、きっちり縦の動き、横の動き両方を意識しているのが Windows とかで、改行コードは CR LF の 2 バイトになっています。(昔の、かな) Mac OS とかは CR だけで改行を表してきたし、Unix 系は伝統的に LF だけで改行を表してきました。

なもんで、端末において "\n" を出力したときに改行されるかどうか、は実行環境依存かもしれません。まあ、たぶん、お使いの環境では "\n" を出力すれば改行されるでしょう。

それさておき、PHP は 「PHP: Hypertext Preprocessor」という名前のとおり、元々は Hypertext 出力、ざっくり言えば html を吐き出すことに特化した言語で、<?php タグに挟まれた部分以外はスクリプトに書いた文字がそのまま表示される、という特徴があります(次の拙稿 include と require_once の使いわけ - Qiitaも参考になるのではないかと思います)。通常はこれを HTML テンプレートのように使うわけですが、ターミナル上でも <?php タグの外ではコード上の改行も「そのまま」表示されるので、改行コードを明示的に出力しない、次のような書き方も出来ます。

php

1<?php 2$row = explode(',', 'りんご,みかん,ぶどう,さくらんぼ'); 3?> 4<?php foreach ($row as $hoge) : ?> 5<?=$hoge?> 6 7<?php endforeach; ?>

"<br />" をつけると改行される、というのはブラウザで html として表示したときの話です。"break" の意味ですね。ターミナル上で echo '<b>りんご</b>'; とやると強調表示されずにそのまま "<b>りんご</b>" と表示されるのに対し、ブラウザで html として表示している場合にはボールド体で "りんご" と表示される、というのと同じです。

投稿2016/03/06 23:02

unau

総合スコア2468

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

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

0

二点ほど直してみましたが、以下でどうでしょうか?

php

1<?php 2$row = array(りんご, みかん, ぶどう, さくらんぼ); 3 4foreach($row as $hoge) { 5 echo $hoge . "\n"; 6}
  1. arrayがないと実行できなかったので、arrayをつけました。
  2. $hogeに改行コードを付与するように修正しました。

投稿2016/03/06 16:07

ryunix

総合スコア1656

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問