PHPでプログラムを書いているんですが、<?php ?>で書くとエラーは出ないのですが、<?= ?>で書くとエラーが出る場合があります。
この違いって何なんでしょう?
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答4件
9
ベストアンサー
マニュアルで各タグについてまとまって書かれてるページをやっと見つけました。
バージョンやphp.iniの設定によって使用できるタグが違います。まずは、お使いのPHPのバージョンと設定を確認してください。
さすがに5.4.0未満を使っている人は既にいないと思いますので、<?= ... ?>
が有効であるという前提でお話をします。<?= ... ?>
は単純に<?php echo ... ?>
の省略形です。つまり、機械的に内部で置き変えられているだけと言えます。ということは、その置き換えた形でエラーになるのであれば、同じようにエラーになると言うことです。
PHP
1$aは0でこれを比較して動作を変える。 2<?php $a = 0; ?> 3以下はエラーにならない。 4<?php 5if ($a == 0) { 6 echo "0"; 7} 8?> 9以下はエラーになる。 10<?= 11if ($a == 0) { 12 echo "0"; 13} 14?> 15なぜなら、以下と同じだから。 16<?php echo 17if ($a == 0) { 18 echo "0"; 19} 20?> 21PHPではifは式ではなく文であるため、echoの引数にできない。
つまり、echo
をつけるとエラーになるようなものが続いているなら、エラーになる。そうでなければ、エラーにならない(かつ、それを表示する)ということです。
投稿2017/03/11 00:11
編集2017/03/11 00:13総合スコア21707
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
4
どこのリファレンスを見たのかしりませんが、PHPマニュアルを見ると以下の記述があります。とりあえず、short_open_tagが有効になっているかどうか、確認してみてはいかがでしょう。
echo には、開始タグの直後に等号を付ける短縮構文もあります。 この短縮構文は、PHP 5.4.0 より前のバージョンでは設定オプションshort_open_tagが有効な場合しか使えません。
I have <?=$foo?> foo.
PHP
1<?php 2$text1 = "text1"; 3$text2 = "text2"; 4$text3 = "text3"; 5?> 6<?= $text1 ?> 7<!DOCTYPE html> 8<html lang="ja"> 9<head> 10 <meta charset="utf-8"> 11 <title>タイトル</title> 12 <style type="text/css"> 13 * { 14 margin: 0; 15 padding: 0; 16 } 17 18 #text3 { 19 color: red; 20 } 21 </style> 22</head> 23<body> 24<h1><?= $text2 ?></h1> 25<h2 id="<?= $text3 ?>">テキスト1</h2> 26</body> 27</html>
投稿2017/03/11 04:49
総合スコア14729
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
3
ソース・エラーがどのようなものかは記述がないので存じ上げませんが、
<?php ?>は以下のように処理を記述します。lang
1<?php 2 for ($i = 0; i < 10; i++) { 3 //画面上にHello, Worldを10回出力する処理 4 //echo''内には任意の文字列を記述する 5 echo 'Hello, World'; 6 } 7?>
一方で、<?= ?>は上記の<?php echo '' ?>の省略形で
以下のように記述します。変数に格納した文言を画面に出力する
場合に利用します。
(例)DBから取得したデータを画面に表示したい場合など
lang
1<?php 2 $greeting = 'Hello, World'; 3?> 4<html> 5 <head></head> 6 <body> 7 <h1><?= $greeting ?></h1> 8 </body> 9</html>
抽象的な質問だと、求めている結果が返ってこない場合があるので、
ソースや実際に発生したエラー等を忠実に説明すると良いと思います。
投稿2017/03/10 16:20

退会済みユーザー
総合スコア0
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
1
<?php echo 'xxxxx'; ?>を省略して書く方法【PHP】 - Programming Magic
おおかた有効になってないんでしょう。
投稿2017/03/10 16:16
総合スコア2050
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
意見交換
受付中
クラスの public function について、public を省略しますか?しませんか?
回答10
クリップ1
更新
2023/05/24
Q&A
解決済
NotionAPIでページコンテンツを取得したい
回答1
クリップ1
更新
2023/05/31
意見交換
クローズ
ブラウザーバックを効かないようにする方法はありますか。
回答23
クリップ6
更新
2023/05/13
Q&A
解決済
htmlのformのsubmitが効かない
回答1
クリップ0
更新
2023/06/07
Q&A
受付中
Java キーボードから入力を受け付ける命令
回答3
クリップ0
更新
2023/06/07
意見交換
受付中
いくつかのメソッドの大項目としてのコメントアウトをどう書くか
回答4
クリップ1
更新
2023/06/04
意見交換
受付中
Wordpressのphpファイルにデータベースの接続情報を直接記入しても大丈夫なのでしょうか。
回答39
クリップ3
更新
2023/05/25
意見交換
クローズ
プログラマを目指す際の進路について
回答40
クリップ2
更新
2023/05/27
同じタグがついた質問を見る
特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。
PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。
プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。