• ベストアンサー

変数に格納された文字列でdefineの値を呼びたい

以下の内容で"Hello world!"を表示したい場合 どのように記述すれば良いのでしょうか。 define("DEF_TEXT", "Hello world!"); $def_array = Array('URL','TEXT','MAIL'); $def_val = 'DEF_' . $def_array[1]; // 'DEF_TEXT'; $value = (ここがわからない); echo $value; $$def_val、${$def_val}、eval($def_val) と書いてみましたがどれもダメでした。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

$value = constant($def_val);

labilion
質問者

お礼

早速試したところ表示されました。 助かりました、ありがとうございます!

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

関連するQ&A

  • 配列名や変数の一部として変数(文字列)を使う方法?

    PHPを勉強し始めたばかりの者です。以下のような状態で、 配列の要素(例「へべれけ」)を出力したいのですが、 どうもうまく行きません。どうかアドバイスをいただけませんでしょうか? <?php $arDrunk = array("ほろ酔い","へべれけ","記憶なし"); $status = array("Sleepy","Drunk","Hungry"); $ref = $status[1]; //Drunk $hoge = "ar$ref"; //arDrunkと入れているつもりです。 // ↓print_rではちゃんと全ての要素が閲覧できるのに echo "<pre>"; print_r($$hoge); echo "</pre>"; // ↓では何も出力されません。 echo $$hoge[1]; // $arrayDrunk[1]、つまり「へべれけ」を出したい。 echo '$$hoge[$i]という形では使えないのでしょうか?' ?> もしかして$$hogeを処理するための、JavaScriptでの evalのようなものがあるのでしょうか?

    • ベストアンサー
    • PHP
  • valueの値について教えてください!

    前提として疑問なのですがname属性の値を日本語にすると古いブラウザで 文字化けするなど環境により問題があるようなので英語にするのが無難と 言われておりますよね。 なんとなくそれは納得できるのですがセレクトボックスやラジオボタンの valueはなぜ英語または数字で指定されていることが多いのでしょうか? 初心者なものでまずは一度試してみようと思い英語でセレクトボックスのvalueを指定し 入力ページに以下のように配列を用意し(実際には47都道府県) $area_array = array(1 => '東京', 2 => '神奈川', 3 => '千葉'); foreach ($area_array as $key => $val) { echo "<option value=\"" . $key ."\">" . $val . "</option>\n"; } とすると <option value="1">東京</option> <option value="2">神奈川</option> <option value="3">千葉</option> となるのですがvalueが数字なのでこの状態で次の確認ページに進むと 何を選んだのかわかりません。 確認ページに if ($_SESSION['area'] == '1') { $_SESSION['area'] = '東京'; } と記述すればいいのですが47件もあるのでもっと簡略化 できないものかと思い調べてみたのですが有力な情報がみつからず質問 させて頂きました。 valueを日本語にすればそのままなので問題ないのですが英数字での場合 どのようにすれば実現できるのかを教えて頂きたいと思っております。 詳しい方おりましたら宜しくお願い致します。

    • ベストアンサー
    • PHP
  • echoの直後に変数(文字列ではなく)を記述?

    echoの正しい記述方法についてご質問します。 echoの直後に変数(文字列ではなく)を記述する場合の質問です。この場合、echoを使用して「変数です」と出力(「」は、出力しません。)するには、以下の例の内、どの記述が正しい(又は最も良い)のでしょうか? 例1: <?php $var = "変数"; echo $var,'です'; ?> 例2: <?php $var = "変数"; echo ',$var,です'; ?> 例3: <?php $var = "変数"; echo '$var,です'; ?> また、上記よりもっと良い記述方法があれば、お教え下さい。 この質問の内容に関して詳細な情報が記載されているサイト等をご存知でしたら、お教え下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • テーブルデータ表示

    mysqlからデータをphpで取得し以下のような多次元配列になっています。 Array ( [0] => Array ( [id] => 116 [name] => あああ ) [1] => Array ( [id] => 58 [name] => いいい ) [2] => Array ( [id] => 89 [name] => ううう ) ) 単純にデータを表示させたく以下のようにしましたが<th>$key2</th>の箇所が上記配列の場合 2回繰り返されて表示されてしまいます。ここはフィールド名なので1回の表示でいいのですが どのように記述すれば思うような表示になるでしょうか? echo "<table border=\"1\">"; echo "<tr>"; foreach ($tmp1 as $key => $val) { foreach ($val as $key2 => $val2) { echo "<th>" . $key2 . "</th>"; //フィールド名 } } echo "</tr>"; foreach ($tmp1 as $key => $val) { echo "<tr>"; foreach ($val as $key2 => $val2) { echo "<td>" . $val2 . "</td>"; // 取得したデータをある分だけ繰り返し } echo "</tr>"; } echo "</table>";

    • ベストアンサー
    • PHP
  • HTML内の値を取得し、別の箇所にコピーする方法

    下記のソースで書き換え実行ボタンを押下すると、2行目の表示内容を1行目にコピーした上で、2行目の内容を削除したいと思いました。 2行目の内容の削除は下記の3行で出来ていると思います。 $("#text2_1").html(""); $("#text2_2").val(""); $("#text2_3").val(""); ただし、2行目の内容を1行目にコピーする所がわかりませんでした。 $("#text1_1").html("2行目"); $("#text1_2").val("2行目"); $("#text1_3").val("2行目"); 上記3行の「2行目」と固定で記述されている箇所の代わりに、下記3行の値を取得する記述をしないといけないのかと思ったのですが、どのように記述すればよいかわからなかったのでアドバイスいただける方がいらっしゃいましたら、ご教示の程、よろしくお願いします。 <div id="text2_1">2行目</div> <input type="text" name="text2_2" id="text2_2" value="2行目" /> <input type="hidden" name="text2_3" id="text2_3" value="2行目" /> 【ソース】 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script language="JavaScript" type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> <!-- $(function(){ $("#change").click(function(){ $("#text1_1").html("2行目"); $("#text1_2").val("2行目"); $("#text1_3").val("2行目"); $("#text2_1").html(""); $("#text2_2").val(""); $("#text2_3").val(""); }); }); // --> </script> <title>title</title> </head> <body> <form> <input id="change" type="button" value="書き換え実行" /> </form> <br /> <div id="text1_1">1行目</div> <input type="text" name="text1_2" id="text1_2" value="1行目" /> <input type="hidden" name="text1_3" id="text1_3" value="1行目" /> <div id="text2_1">2行目</div> <input type="text" name="text2_2" id="text2_2" value="2行目" /> <input type="hidden" name="text2_3" id="text2_3" value="2行目" /> </body> </html> 以上、宜しくお願いします。

    • ベストアンサー
    • AJAX
  • メソッドは値を返さないというエラー?

    お世話になります。 JAVAでプログラミングを始めたものですが、本を参考にコーディングしてコンパイルするとエラーになってしまいます。考え方がダメなのか何か足りないのか良く分かりません。 private long longValue(String A,long def) {   long val = def;   try {    if (A != null && !A.equals(""))      val = Long.parseLong(A);   }   catch (NumberFormatException e) {     return val;   } } エラーは、method dose not return a valueです。

    • ベストアンサー
    • Java
  • JavaScript文字列連携に関して

    質問させて頂きます。 下記のようなテキストフォームがあったとして、submit押された時に、jsを走らせ、テキストに数値以外が入っていないかチェックしたいと考えています。 ------------------------------------------------- <input type="text" name="text_1" /> <input type="text" name="text_2" /> <input type="text" name="text_3" /> ------------------------------------------------- チェック自体は下記のような記述で行うことが出来ました。 ------------------------------------------------- if(document.form1.text_1.value.match(/[^0-9]+/)){ //文字です } if(document.form1.text_2.value.match(/[^0-9]+/)){ //文字です } if(document.form1.text_3.value.match(/[^0-9]+/)){ //文字です } ------------------------------------------------- ですが、同じif文を並べて記述したくなかったので、for文を使って記述したいと考えました。 ------------------------------------------------- for (var i=1 ; i<=3 ; i++){ if(document.form1.text_1.value.match(/[^0-9]+/)){ //文字です } } ------------------------------------------------- この時、if文内のtext_1をどのように記述すれば、text_1,text_2,text_3と変化させることが出来るでしょうか。 ※「text_ + i +」等試してみましたが、正常に動作出来ませんでした。 ご存知の方がいらっしゃいましたら、ご教授頂けると助かります。 また、質問の内容に不備な点があるかもしませんが、その際はご指摘頂けると幸いです。 よろしくお願いいたします。

  • 配列に格納した値が保存されない

    DB(Access)から取得した内容を配列に格納し、その内容を取り出すプログラムを 以下のように書いてみました。 whileループ内の alert("ループの中=" + data_array[i]); では配列の中の値が参照できるのですが whileループの外で for(var i=0;i < data_array.length; i++){ alert("ループの外:" + data_array[i]); } 配列の中身を表示させようとしたところdata_array.length の長さが0になっており 配列の中身が参照できない状態です。なにが原因かわかりますでしょうか。 <html> <script language="javascript" type="text/javascript"> function dbSearch() { var sql="select * from URL where flg=0"; var database = dbConnect(); var recordSet = database.Execute(sql); var data_array = new Array(); while (!recordSet.EOF){ data_array[i] = recordSet(0); alert("ループの中=" + data_array[i]); recordSet.MoveNext(); } alert("長さ=" + data_array.length); for(var i=0;i < data_array.length; i++){ alert("ループの外:" + data_array[i]); } database.Close(); return; } //データベースに接続 function dbConnect() { var database = new ActiveXObject("ADODB.Connection"); database.Open("Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\\test.mdb;"); return database; } </script> <body> <input type="button" value="DB接続" onclick="dbSearch()"> </body> </html>

  • テキストボックスの値で配列の値を求めるには?

    やりたいと思っているのは、 (1) "INPUT" の値を入力。 (2) "koteichi" は他からの参照値。 (3) "goukei"に(1)と(2)の合計値。 (4) "total" に(3)の値に該当する配列の値。 (実際には配列の値を代入した式の答え。) という流れになります。 (3)まではなんとか分かるのですが、 (4)はどのように配列の値を代入すればいいのかが 分かりません。  なにぶん最近始めた初心者なので不規則な値は配列を使えばいいと解釈したのですが、まったく使い方を間違えているのでしょうか? こういった場合は別のやり方があるのでしょうか? どなたかよろしくお願いします。 <SCRIPT language=JavaScript1.1> <!-- rank = new Array(6); rank[0]=0; rank[1]=5;[rank2]=8;[rank3]=12;rank[4]=16;rank[5]=22; function calc(){ document.myform.goukei.innerText = eval(document.myform.INPUT.value) +eval(document.myform.koteichi.value); } // --> </SCRIPT> </HEAD> <BODY> <form name="myform"> <INPUT size="20" type="text" name="INPUT" value="0" onchange="calc()"/>+<INPUT size="20" type="text" name="koteichi" value="10">=<INPUT size="20" type="text" name="goukei" value="0"> <INPUT size="20" type="text" name="total" value="0"> </FORM> </BODY>

  • SESSION変数と同じ変数名は使えないのかな?

    よろしくお願いいたします。 以下のように記述しました。 <?php session_start(); $_SESSION["abc"]="hello world!"; print("abc:1:{$_SESSION["abc"]}<br/>"); $abc="000"; print("abc:2:{$_SESSION["abc"]}<br/>"); ?> 1回目の実行は abc:1:hello world! abc:2:hello world! ですが、F5を押しますと、 abc:1:hello world! abc:2:000 となります。 デバッガ(Peggyですが)をかけると、見事に$abc="000";の行を実行 すると、$_SESSION["abc"]の値もかわります。 これは仕様なのでしょうか? Documentを見る限りわかりませんでした。 PHP5.2.0です。 以上、よろしくおねがいします。

    • ベストアンサー
    • PHP