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

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

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

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

Q&A

解決済

4回答

1870閲覧

出力の違いが分からない

a-_.

総合スコア133

PHP

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

0グッド

0クリップ

投稿2016/07/29 07:13

編集2016/09/06 02:18

echo print printf sprintfの出力方法の違いを調べてみたんですが、複数のサイトを読み比べていて説明に矛盾があったのでハッキリした定義が分からなくなってしまいました

echoとprintで引数が1つだったり2つだったり・・・

下記リンクは私が参考にしていたサイトです
リンク内容
リンク内容

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

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

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

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

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

guest

回答4

0

過去から脈々と対立している不毛なecho派=print派戦争ですね?

基本的にはechoもprintも関数ではなく構文です。
なのでかっこでくくる必要はありません。
echoとprintの仕様上の違いはほぼありませんが
printは実行されると戻り値を返し、echoは返しません。
具体的には

PHP

1$a=print "test"; 2var_dump($a);

は可能ですが

PHP

1$b=echo "test"; 2var_dump($b);

はエラーになります。

一方printf()とsprintf()は関数です
それぞれ整形したデータを展開するときに使います
printf()は直接出力、sprintf()は戻り値として返します

PHP

1$c=123; 2printf("this is %s !",$c);

とすれば%sに数字が展開されて表示されます
sprintf()は別途出力する構文がない場合は出力されません。
変数に受けたりする場合便利ですね

PHP

1$d=456; 2$e=sprintf("this is %s !",$d); 3print $e;

投稿2016/07/29 07:26

yambejp

総合スコア114572

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

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

yambejp

2016/07/29 07:27

ちなみに、私はBASICから入ったのでprint派
yambejp

2016/07/29 07:45

出力が複数ある理由は単純にPHPが後発の言語だからです PHPを始めるユーザーはたいてい別の言語を習得しています ある人は「出力はechoだろ、それに複数出力できるのが当たり前じゃん」といい 別の人は「出力はprintだろ、出力するのは1つで、変数のように戻り値ほしいぜ」という ようは回答のあたまに書いたような個人の好き嫌いによる不毛な争いがずっとつづいてます。 それとは別に、PHPにはシノニム(エイリアス)という考え方があり 完全に仕様がおなじものもあります。 これはたんなる別名を持っているということですきな方を使えばいいです。 たとえばexitとdieはシノニムの関係にあります。 http://php.net/manual/ja/aliases.php
guest

0

ベストアンサー

PHPは極端に実用本位で作られた言語のため(作者いわく「言語を作るつもりなどなかった」とのこと)、他の言語からの影響が吹き溜まりのようになって、似て非なる構文があふれるようなことになっています。PHPを使う以上は、そういうものと諦めるしかありません。

printfは「書式付き」という明確な違いがありますが、echoprintに関しては、少なくとも「文字列1つを出力する」という目的で使う分には違いはありません。

複数の引数を取れるのはechoだけ(もっとも、ふつうは文字列連結してしまうのでechoに複数渡すことはしません)、値を返すので式に入れられるのはprintだけ、という差異はありますが、普通やりませんので気にしなくて大丈夫です。

投稿2016/07/29 07:41

maisumakun

総合スコア145121

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

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

0

回答ではないのですが・・・実際にプログラムを走らせてみればいいのでは?
「追記」
情報がおかしいと思うときはまず実践、それとマニュアルの確認ですね。
PHPのマニュアルを確認しましたか? PHP マニュアル

投稿2016/07/29 07:24

編集2016/07/29 07:30
cateye

総合スコア6851

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

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

a-_.

2016/07/29 07:27

ご回答ありがとうございます 結論からすればそうかもしれないですが、関数と同じように出力にも意味や用途別に使い分けがあると思ったので質問しました
cateye

2016/07/29 07:46

文字列出力に関しては(てかPHPも10年ぐらい前に一度使っただけ)自分が望む出力が得られればいいと思っているのであまりいい意見ではないと思いますが、どの関数を使うか(使わないという選択肢も含めて)はプログラムを作るプログラマの裁量です。言語提供者の仕事ではありません。提供されている機能をどう使おうとこっちの勝手です。そうした中で、この出力にはechoがいいとかprintがいいとか出てくるわけです。
guest

0

定義とか深く考えなくてもいいんですよ。
用途に合わせて使えば。

単に出力したい → ehco,print
フォーマットして出力したい → printf
フォーマットした文字列を得たい → sprintf

投稿2016/07/29 07:20

ttyp03

総合スコア16996

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

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

a-_.

2016/07/29 07:30

ご回答ありがとうございます ではリンク先で定義している内容は一体なんなのでしょうか 「出力したい」だけだったらわざわざechoやらprintなんて分ける意味はないと思いますが
ttyp03

2016/07/29 07:35

echoは関数ではなく、printは関数で戻り値が返る、という違いはあるので、全く同じ機能というわけではないです。 ただどちらも単純に引数の値を出力することに変わりはないので、戻り値が必要ない(場合がほとんどだと思いますが)のであれば、お好みで使えば良いと思いますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問