• ベストアンサー

phpの変数について

phpの変数として<?= ~ ?>は設定できないのでしょうか? 例) $test = "<?= $smple ?>" <html> <body> <p>$test</p> </body> </html> 上の記述だと文字列として扱われてしまうので、以下のように表示されてしまいます。 <html> <body> <p><?= $smple ?></p> </body> </html> 変数を使用して、通常のphp構文のように使用することはできないのでしょうか? 若しくは、同じことを実現するためには別のやり方や関数などを用いなければならないのでしょうか? 基本的なことを質問している気がしますが、どなたかご教授願います。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

maenet1972です。 提示されたソースを見て、ようやく理解出来ました。 つまり、"smp01""smp01"を判別して出力方法を変えたい訳ですね。 単純に"<?=~?>"は必要ありませんので、そのまま変数を入れてください。 $smpnum01 = $_POST[smp01]; switch ( $smpnum01 ) { case 1: $str01 = "パターン01"; break; case 2: $str01 = "パターン02<select name='smp02' onChange='document.myform.submit();'><option value='1'" . ($smpnum02==1) ? " selected":"".">選択01</option> ・・・※以下略 </select><br>{$str02}<br>"; break; ・・・※以下略 なので、今回の件はincludeは全く必要としません。

minoru4891
質問者

お礼

maenet1972さん、有難うございます。 お陰様で希望通りの動作ができました。 tany180sxさんに掲示された記述とあわせて考えてみた後に、 クォーテーションの使い方を変更しました。 以下、ご参考までに。 <option value='1'" .( $smpnum02==1?' selected':'' ) .">test01</option> これでバッチリです。 殆どjsを使うことなくできそうです。

minoru4891
質問者

補足

早速試してみましたところ、正しく表示されませんでした。 問題となる『switch ( $smpnum01 ) { ~ の case2』の箇所ですが、 selectboxが全く表示されずに、$str02の変数部分だけに「selected」と表示されてしまいます。 これは、一体なぜでしょう??? よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.4

$sample = 'hoge'; $test = '<?= $sample ?>'; echo '<p>' . eval('?>' . $test) . '</p>'; とすればできなくもないですが。 > <option value='1'<?= ( $smpnum02==1?' selected':'' ) ?>>選択01</option> echo '<option' . ($smpnum02 == 1 ? ' selected' : '') . '>選択01</option>'; ではだめなんでしょうか。 SELECTは大概めんどくさいので関数なりライブラリ化しといた方がいいかも。 $select = form_select($name, $value, $collection, $attributes); あとは、根本的に長いHTMLはテンプレートとして別に切り出した方がいいかも。 それと $_SERVER['PHP_SELF'] はNG。

minoru4891
質問者

補足

<?= ?>の使用は強引過ぎて分かり難いですね。 >ではだめなんでしょうか。 ダメということはありません。慣れや使い勝手の問題でしょうか・・・。 >SELECTは大概めんどくさいので関数なりライブラリ化しといた方がいいかも。 そうですね。実際のoptionデータは別のファイルデータやDBからのデータをselet文で集めてHTML上には<option></option>内には変数1行しか書きません。 >それと $_SERVER['PHP_SELF'] はNG。 スイマセン。 本ちゃん用ではなく、ベースを作っていたので端折ってしまいました (汗 >あとは、根本的に長いHTMLはテンプレートとして別に切り出した方がいいかも。 “アドバイス”ではなく“回答”ということなので、テンプレート化したファイルを読み込む時の記述など簡単な例を挙げて頂けると助かります。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

minoru4891さんがやりたい事は何となくわかりますが、HTML本文中にphpを実行する場合、基本的にphpからHTMLを出力した時点でphpは実行されません。ですが、そのHTML(<?= $smple ?>を含めた)をサーバーにファイルとして保存し、includeした場合は“$smple"はきとんとPHPの変数として評価されます。 ご理解されましたか?

minoru4891
質問者

補足

別の方の補足に詳細を明記したのですが、 補足のサンプルコードの場合、includeを使用するには、どの部分にどのように記述すればよいのでしょうか? 若しくは、どのように修正をすればよいのでしょうか? よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • t_ohta
  • ベストアンサー率38% (5088/13306)
回答No.1

あなたが理想としている出力結果はどういう状態なんでしょうか。

minoru4891
質問者

補足

やはり、詳細を書かないと答えようがないですよね。 最終目的はswitch~case~を使ってリストボックスを連動させてページの表示をさせたいのです。JavaScriptを多用すればできるのですが、 あまり使いたくないので奮闘中でした。 以下、サンプルソースを掲示します。 <?php $smpnum02 = $_POST[smp02]; switch ( $smpnum02 ) { case 1: $str02 = "結果01"; break; case 2: $str02 = "結果02"; break; case 3: $str02 = "結果03"; break; default: break; } $smpnum01 = $_POST[smp01]; switch ( $smpnum01 ) { case 1: $str01 = "パターン01"; break; case 2: $str01 = "パターン02<select name='smp02' onChange='document.myform.submit();'> <option value='1'<?= ( $smpnum02==1?' selected':'' ) ?>>選択01</option>                       ↑ここ <option value='2'<?= ( $smpnum02==2?' selected':'' ) ?>>選択02</option>                       ↑ここ <option value='3'<?= ( $smpnum02==3?' selected':'' ) ?>>選択03</option>                       ↑ここ </select><br><?= $str02 ?><br>";             ↑ここ break; case 3: $str01 = "パターン03<select name='test'> <option value='1'>その他01</option> <option value='2'>その他02</option> </select>"; break; default: break; } ?> <html> <body> <form action="<?=$_SERVER[PHP_SELF]?>" method="POST" name="myform"> <select size="1" name="smp01" onChange="document.myform.submit();"> <option value='1'<?= ( $smpnum01==1?' selected':'' ) ?>>テスト01</option> <option value='2'<?= ( $smpnum01==2?' selected':'' ) ?>>テスト02</option> <option value='3'<?= ( $smpnum01==3?' selected':'' ) ?>>テスト03</option> </select><br> <?= $str01 ?><br> </form> </body> 以上ですが、↑でここと指している部分が悩みドコです。 もう一方のご指摘通りincludeも考えたのですが、どのように記述してよいか混乱してしまいました。他にも色々と試したのですが、 知識不足のためか解決できません。 何か良い方法はありますでしょうか? この方法ではやはり無理があるのでしょうか? よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javascript変数をPHP変数に渡し,またjavascript変数に渡すには?

    javascriptの変数を、PHP記述のPHP変数に渡し、 またjavascript変数に渡したいのですが、 何か良い方法はありますか? つまり、javascriptに無さそうな関数なので、 PHPで用意されている関数(mb_convert_encoding) を使い、またjavascriptの変数に戻してやりたいのです。 ご存知の方がいましたら、ご教授下さいませ。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPとMT間での変数の引き渡し

    PHPの初心者です。よろしくお願いします。 MTのテンプレート内で、PHPのプログラムを組み込み、 $entrylink = "<MTEntryPermalink$>"; として、変数を取得しました。 それを少々加工した後、$entrylink2 とし、 <? ~ ?>を抜けて、通常のMTタグの世界に戻って、 $entrylink2 を使用しようとしたのですが、値が入っていません。 <? ~ ?>の中で指定した変数を、そこを抜けた後でも使用するためには どうすればよいのでしょうか? 基本的なことで申し訳ありませんが、よろしくお願いいたします。

    • 締切済み
    • PHP
  • jqueryとphpで変数をやり取りしたい

    jqueryとphpで変数をやり取りしたい こんばんは 現在jqueryとphpのやり取りを模索しています phpで定義した変数(仮に$dataPHPとして)に文字列を入れておきます それを外部のjqueryにどうにかして渡す(この『渡す』方法が分からない・・・) そして、jquery内で受け取った変数から色々処理をして、最終的に今度は別の変数(また仮に$dataJQUERYとします)をPHPに渡します PHPではその変数を受け取り、以降の処理を進めていく、というものです 『jquery php データ 渡す』などで調べてみると、$.ajaxや$.postを使うとデータを渡せるとあり、実際にサンプルプログラムを動かしてみました しかし、javascriptからphpにデータを送ることはできても、コールバック関数というものでjavascriptに返ってきたり、innerHTMLで直接埋め込んでしまったりと、純粋に変数として保持できる方法が見つかりませんでした jqueryとphpで自由に変数を渡しあえる方法はないのでしょうか? 現在の環境はjquery1.4.2、php5、apache2、IE7です どうぞご教授願います

  • Javascript+PHPで変数を受け渡したい

    PHP変数の文字列データを、 <a href ="Javascript:xxx($data)">として、関数を実行させたときに、関数側での function xxx(data){ --データで指定されたhtmlへ移動したい } という方法は、実現できないのでしょうか。 Javascriptのエラーでデータの受け渡しができていないみたいなのですが、わかる方教えてください。

  • php 変数(変数名)の結合について。

    php 変数(変数名)の結合について。 こんばんは。 phpでホームページを作成しておりますが どうも上手く動かないのでこちらに質問させて頂きました。 変数名$testに数字を連番で付け、 $test0 = (値1,値2,値3,・・・) $test1 = (値1,値2,値3,・・・) $test2 = (値1,値2,値3,・・・) と各変数に配列を代入したいと考えています。 そこで、for文を使用し、 for($i=0; $i<10; $++) {  $test.$i = (値1,値2,値3,・・・) } と記述た所、上手く動作せずに困っております。 二次元配列での代入は可能だと思いますが $test[0] = (値1,値2,値3,・・・) $test[1] = (値1,値2,値3,・・・) $test[2] = (値1,値2,値3,・・・) for($i=0; $i<10; $++) {  $test[$i] = (値1,値2,値3,・・・) } ※ 実験してませんけど・・・。 なるべく二次元は使わないで処理したく思いますが やはり二次元配列のが合理的でしょうか・・・。 その点も踏まえ、何方かご教授頂ければ幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • requireで呼び出したデータを変数に入れるには

    <?php $test = require_once 'date.html'; print "<p>$test</p>"; ?> このソースだと、requireで呼び出したデータを変数に保存できないのですが、 どうすれば変数に保存できますか?

    • ベストアンサー
    • PHP
  • PHPの文字列の比較について

    PHPの文字列の比較について質問です。 $hoge = "文字列¥¥テスト"; $foo = "文字列¥テスト"; とあった場合 var_dump($hoge == $foo); とすると trueがかえってきます。 バイト列としてみた場合 エスケープしたバックスラッシュと 構文上、エスケープの必要のないバックスラッシュの文字列上の 比較ですがこれが、なぜかtrueがかえってきます。 これは、当然の結果なのでしょうか? PHPは文字列を比較するさい、バイト列としての文字列のならびより アウトプットされる結果を比較しているということでしょうか? それとも、単純に上記変数$hogeと$fooはバスックスラッシュの使用方法は 関係なく同一のものとして扱われるのでしょうか?

    • 締切済み
    • PHP
  • 変数など厳密なプログラムが書きたいのですが、どうすればよいでしょうか?

    PHPで関数の引数に渡すとき、以下のように$aaを$aとしてしまった場合に 関数内の$idは値がありませんが、関数内でこれを検出することができるのでしょうか? Perlなら use strict;とし、my等で定義されていない変数はすべて警告表示されますが、PHPはスルーです。 変数など厳密なプログラムが書きたいのですが、どうすればよいでしょうか? $aa = 1; test($a) function test($id){ ... }

    • ベストアンサー
    • PHP
  • javascriptとphpの変数のやり取り

    ある該当ページ(mtの検索結果ページ)が拡張子をphpにできず、 <script src=hogehoge.php></script>でphpファイルを読み込んで、 実行したいと思います。 phpを使用している理由はある変数を取得したいのですが、 今回は関係ないので割愛します。 ■以下ソース ・該当ページ(mt-search.cgi) <html> <head> <title>hoge</title> <script type="text/javascript" src="/hogehoge.php"></script> </head> <body> <script> document.write("<p>"+str+"</p>"); </script> </body> </html> ・phpファイル(hogehoge.php) <?php if(test == test){ $str = "成功" }else{ $str = "失敗"; } ?> <script type="text/javascript"> <!-- var str= "<?php echo $str?>"; --> </script> このようにしているのですが、 うまく出力されません。 php側の出力はうまくいっているようなのですが、 ブラウザ側の方でちゃんと変数がわたっていないようです。 画面は真っ白です。 ご教授お願いいたします。

  • PHPの変数展開

    いつもお世話になっております。 最近PHPを勉強し始めたのですが、どうしてもわからないことがあります。 PHPの変数に文字列を格納し、それを画面に表示したいです。 ネットを参考にしても、またネットの例文をそのまま実行しても、 PHPの変数に格納された文字列が表示されません。 どうしてなのか、さっぱりわかりません。 どうか教えてください。 <?php $colorname = "red"; echo "frame is $colornamecolor"; ?> このように記述して実行すると、画面には 「frame is 」と表示されます。

    • ベストアンサー
    • PHP