ベストアンサー PHPの 「 $$ 」 ( 2つの$ ) はどういう意味でしょうか 2004/05/22 17:34 $aaa[$i] = $$bbb; ↑の「 $$ 」は何でしょうか? 変数名の前につける$は普通1つなのに、何故2つ付いてるんでしょうか? みんなの回答 (4) 専門家の回答 質問者が選んだベストアンサー ベストアンサー noname#45976 2004/05/25 17:04 回答No.4 簡潔にご説明いたします。 $$を二つつける、と考えずに、$のとなりに$bbbの値が入るとどうなるかを考えて見ましょう。^^ たとえば、$bbbという変数に「ccc」という文字が入っていたとします。 すると、$$bbbは、$cccという変数になります。 powuran さんの例でいうと、$aaa[$i] = $$bbb の$aaa[$i]に代入される値は、$cccの値になる、ということです。(^-^b 前もって$cccに値が代入されていれば、その値になります。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (3) kusukusu ベストアンサー率38% (141/363) 2004/05/22 19:19 回答No.3 > No.1の方の例題がどう表示されるのかも abcと表示されます。 つまり $test="abc" です。 また、$b="test"です。 ここで、 print $b; とすれば、当然 test と表示されます。 が print $$b; であれば、abc と表示される。 この違いはおわかりでしょう。 しかしこの例題では可変変数に何の意味があるのかさっぱり分かりませんよね? そこでさっき示した例をもう一回。 フォームで、データをPOSTするときのことを考えます。 form.php側で、 print "<form action=\"confirm.php\" method=\"post\">\n"; for($i=1;$i<=n;++$i) { print "<input type=\"text\" name=\"name".$i."\"><br>\n"; } としたとします。 これは、 <input type="text" name="name1"><br> <input type="text" name="name2"><br> : : <input type="text" name="textn"><br> となるのは分かりますよね? で、次に confirm.php 側に送られてくるデータは、 $name1=$_POST["name1"] , $name2=$_POST["name2"] … $name2=$_POST["namen"]となるのですが、 こういった場合何かの一括処理をしたい場合は面倒ですよね? 例えば、全データに半角英字しか利用してはいけない場合、 if(ereg("[^a-zA-Z]",$name1) { die("半角英字以外が使われてます。"); } と全部やっていくのは面倒なので、 for($i=1;$i<=n;++$i) { if(ereg("[^a-zA-Z]",${"name$i"}) { die("半角英字以外が使われてます。"); } } とやったりするのに利用します。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 kusukusu ベストアンサー率38% (141/363) 2004/05/22 18:05 回答No.2 NO1さんの例題はよく見かけますが、これだと実際何の意味があるのかさっぱり分かりませんよね?(笑) 可変変数は例えば、 <input type="text" name="mount?"> mount1 mount2 : : mountn と言うよなものをPOSTするときなどに使います。 それぞれ${"mount$i"}と行った形で受け取れます。 質問者 補足 2004/05/22 18:39 ご回答ありがとうございます! すみません・・・詳しく説明して頂いたのに 頭が悪い為、いまいち意味がつかめていません・・・ なんとなくは分かるのですが・。 No.1の方の例題がどう表示されるのかも わからないのですが。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 noname#18290 2004/05/22 17:48 回答No.1 可変変数です。 $test = 'abc'; $b = 'test'; echo $$b; が、どう表示されるか確認しましょう。 質問者 補足 2004/05/22 17:51 早速のご回答ありがとうございます! すみません・・・今PHP実行環境がない為 どう表示されるかよければ具体的に教えていただけると 大変助かります・・・。 週明けになれば実行できるのですが、それまでに知っておきたいと思いまして質問しました。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発PHP 関連するQ&A 【シェル】while文の変数定義について OS:Solaris10 sh:Bシェル お世話になります。 シェルの冒頭で定義した変数をwhile文の中で読み込ませたいです。 現状のシェルは下記の通りです。 ---- #!/bin/sh # *** 変数定義 *** AAA1=Spring BBB1=Summer AAA2=Autumn BBB2=Winter # *** メイン処理 *** i=1 while [ $i -le 2 ]; do AAA=AAA$i BBB=BBB$i echo ${AAA} echo ${BBB} i=`expr $i + 1` done ---- しかし、出力される結果は下記のようになってしまいます。 AAA1 BBB1 AAA2 BBB2 これを冒頭の「*** 変数定義 ***」で定義した値を読み込ませ、下記のような出力結果を得たいです。 Spring Summer Autumn Winter どうかご教授ください。 PHPでテキストファイルを読み込み変数に代入する PHP超初心者ですみません。 aaa:111 bbb:222 ccc:333 444444 という内容のテキストファイルをPHPで読み込み aaa(変数名)=111(中身) bbb(変数名)=222(中身) ccc(変数名)=333\n444444(中身改行あり) という風にできないのでしょうか? いろいろ探しましたがわからなかったので よろしくお願い致します。 PHPで変数から1行目だけを取得したい 変数に格納されたデータの1行目のaaaだけを取り出す方法を教えてください。 ※データはWEBサイトのURLリストで常に変動します。 複数行のデータ(\n区切り) 例) aaa bbb ccc 又は1行の半角カンマや半角スペースなどの文字で区切られたデータ 例) aaa, bbb,ccc, aaa bbb ccc 上記のどちらかの形式で変数$dataに格納が可能です。 この$dataに格納されたaaaだけを取得するにはどうしたらいいのでしょうか? PHP初心者のためプログラムソースを書いていただけると助かります。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム 多次元配列?配列のキー?変数の型? PHP勉強中のものです。 予定通りの動作にならんく四苦八苦しています。 どのように修正すれば予定通りになるのか考え方のアドバイスなどお願いします。 処理したいこと 変数$xxxの先頭の文字と最後の文字をsubstr()で取り出し$aaaと$bbbに別けそれぞれ代入しキーとして多次元配列に代入した配列要素を指定してechoで出力したい 試してみたこと $aaa1と$bbb1に直接整数を代入してみたところ、echoで出力された キーになる変数を整数型として変数に代入してみたが希望通りの動作にならなかった。 なにかアドバイス頂けると助かります。 $array = array( "0" =>array("あいうえお","かきくけこ"), "1" =>array("さしすせそ") ); $xxx = "0-1"; $aaa = substr($xxx,0,1); $bbb = substr($xxx,2); $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない $aaa1 = 0; $bbb1 = 1; echo $array[$aaa1][$bbb1]; //出力された $aaa = (int)$aaa; $bbb = (int)$bbb; echo $array[$aaa][$bbb]; //出力されない bashなどのシェル変数の値に改行を含める事は可能でしょうか? タイトルの通りですが、通常のシェル変数の値として [prompt]$ aaa="bbb<改行>ccc" のようなセットを行い、 [prompt]$ echo $aaa bbb ccc [prompt]$ のような結果を得たいのですが、可能でしょうか。 PHPの初歩的なことですが・・・ for($i=0; $i<10; $i++) { $arr = $arr_$i } $arr_1から$arr_10みたいな感じで変数名を変えていきたいんですが、上記だと無理です。 どのように記述すれば大丈夫でしょうか? shellの文法 deffとdo while ?? 最終目標はaaa.c(aaa.txtの中身)とaaa_x.c(bbb.txt)、bbb.cとbbb_x.cのdiffをとり、差分をtxtファイルに出力したいと思っています。 ファイル名の規則は1パターンのみで、_xの前の部分が同じもの通しがdiffをとる対象になります。 (パスはすべてばらばらです) aaa.txtの中身 ファイルパス/ファイル名 a/b/c/aaa.c aa/bb/cc/bbb.c . . . bbb.txtの中身 ファイルパス/ファイル名 x/y/z/aaa_x.c xx/yy/zz/bbb_x.c . . . 考えている処理は (1)aaa.txtからファイル名を抜き出す(basename ?) →結果を変数(AAA)に代入 (2)抜き出したファイル名に_xを追加(.を_x.に置き換え)した変数(BBB)でbbb.txtを検索 (3)変数AAAとBBBのdiffをとる>>txtファイルに出力する shellをうまくつかいこなせず、すみませんが教えていただければと思います。 perlのマクロ演算子?について AAA変数にBBB配列名を代入し,AAA変数に配列を入れてBBB配列を使いたいのですが....どのようにするのでしょうか? 例 $count = 1 $AAA = "@BBB_no".$count; ※$AAA = ("ア","イ","ウ","エ"); ↑ここの※の部分に何か加えるのでしょうか? スクリプト外部ファイルを変数で指定する方法 スクリプト外部ファイル(例えば、bbb.js)をhtml内へ読込むには、 <script language="JavaScript" scr="bbb.js"></script> と書く事を知りました。 ファイル名を変数(aaa="bbb.js")に入れて、変数aaaで読込む方法を教えて下さい。 次のように、変数aaaにファイル名bbb.jsを代入して、読込みたいのですが、動作しません。 <body> <script language="JavaScript"> aaa=location.search; aaa=aaa.substr(1,(aaa.length - 1)); </script> <script language="JavaScript" src=aaa></script> 変数名の有効範囲… こんにちは 変数名は同じディレクトリのファイルであれば有効ですか? 例えば、aaa.htmlというファイルの中で定義した変数名を、bbb.htmlというファイルで使うことはできますか? phpでは、$をつけると変数になりますよね? 次の phpでは、$をつけると変数になりますよね? 次の場合はこれは3つとも変数ということですか? $area = $length * $length; PHP プログラム ループ処理 プログラム初心者です、ループ処理についてうまい解決方法が思い浮かばず相談させて頂きます。 ループ処理において、ループ内で変数を定義するのに違う名前を指定するにはどのような方法があるのでしょうか 例えばwhileの場合 $i =0; while($i<10){ $hoge = $i; $i++ } この$hogeを2順目には$hoge1、3順目には$hoge2と言うように増やしたり一定の法則に乗っ取って変数名を変更するにはどのように書けばいいのでしょうか。 どなたかご教授頂ければと存じます、宜しくお願い致します。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム SHELLコマンドがうまく動かないです VB6.0 Shell("C:\aaa.bat")と書くと動くのに BBB(H$)というフォルダにBATファイルを移動して Shell("C:\BBB(H$)\aaa.bat")と書くと 動きません。 ()がいけないのでしょうか?(>_<) 何が疑問かと言うと、前まで動いていたような 気がするからです。 どなたかおしえてください。 正規表現の$について aaa とある行の後ろにbbbを付けるには 検索条件 $ 置換内容 bbb で、aaabbbになると思うのですが、 aaa bbb と、行末ではなく次行に挿入されます。 Speeeeedを使って、一括置換を試みています。 上記の原因が判らず困っています。 ファイル飛び越えてスコープは不可能ですか? aaa.accdbとbbb.accdbがあり bbb.accdbに変数の宣言と言うモジュールを作り、 aaa.accdbから bbb.accdbへ変数の宣言を参照することは可能ですか? publicで宣言をしても ファイル飛び越えてスコープは不可能ですか? シェルスクリプトのコマンド グループ化における変数の有効範囲について教 シェルスクリプトのコマンド グループ化における変数の有効範囲について教えてください。 中括弧"{ }"を使うと親プロセス(=その実行中のプロセス)にて実行、 小括弧"( )"を使うとサブシェル(=子プロセス)にて実行されると認識しています。 また環境変数は子プロセスに引き継がれ、シェル変数は引き継がれないと認識しています。 以下のシェルスクリプト(Bシェル)でテストしたところ、続くような結果となりました。 ~スクリプト内容~ #!/bin/sh ##TEST1 VAR01=AAA { echo 中括弧内でVAR01は${VAR01}; } ( echo 小括弧内でVAR01は${VAR01}; ) ##TEST2 { VAR02=BBB; echo 中括弧内でVAR02は${VAR02}; } echo 外でVAR02は${VAR02} ##TEST3 ( VAR03=CCC; echo 小括弧内でVAR03は${VAR03}; ) echo 外でVAR03は${VAR03} ~実行結果~ 中括弧内でVAR01はAAA 小括弧内でVAR01はAAA 中括弧内でVAR02はBBB 外でVAR02はBBB 小括弧内でVAR03はCCC 外でVAR03は VAR02、VAR03の結果は納得できます。 またVAR01が{ }に引き継がれているのも納得できました。 しかし、VAR01はシェル変数として作成した(exportによる環境変数化はしていない)にも関わらず、子プロセスである( )内処理にも引き継がれているのはなぜなのでしょうか? 試作クラス使用C++プログラムが動かない原因 試しに作成した以下のプログラムにビルドエラーが発生し,困っているので質問しました. コンパイラは,「BBB *b」などクラスポインタ変数の部分がエラーと指摘しているのですが(他にも数か所ありますが…),間違っている理由が分からず困ってます. ご回答,よろしくお願い致します. ----------------------------------- #include <iostream> using namespace std; class AAA { public: // コンストラクタ AAA(){ b = new BBB( this ); } // デストラクタ ~AAA(){ delete b; } // メンバ変数 BBB *b; int i; // メンバ関数 void displayB(){ b->displayA(); } }; class BBB { public: // コンストラクタ BBB( AAA *a ){ this->a = a; } // デストラクタ ~BBB(){} // メンバ変数 AAA *a; int j; // メンバ関数 void displayA(){ printf( "%d\n", a->i ); } }; int main() { // 変数の定義 AAA a; // 変数の初期化 a.i = 2; a.b->j = 5; // 出力 printf( "%d\n", a.i ); a.b->displayA(); return 0; } ----------------------------------- PHPの文字列の中に<>を入れると、その中が消える PHP初心者です。 例えば、下記のように変数に文字を入れたいです。 $text = "aaa<bbb>"; そうすると、なぜか、<>の中身が消えてしまうのですが、 このような場合、どうしたら良いでしょうか? echo $text; とすると、 aaa し表示されません。 試しに、 $text = "aaa<bbb>ccc"; とすると、aaaccc と表示されます。 ちなみに、mail()関数の中のheader要素を代入する際にこの問題にぶちあたっています。 smartyを使っています。※初期設定のみで何もしていません。 分る方がいましたら、ご助言いただけるとうれしいです。 文字列を配列定義に使用するには 文字列を配列の定義に使用したいのですが、可能でしょうか? 具体的には以下のような内容です。 $AAA = array("name"=>"山田","val"=>"10"); とすると変数$AAAは配列になります。 $BBB = 'array("name"=>"佐藤","val"=>"20")'; とすると変数$BBBは文字列になります。 $CCC = $BBB; と変数$CCCに代入した場合に、 変数$CCCを配列として認識させたいです。 つまり print $CCC[name]; //佐藤 print $CCC[val]; //20 というように出力させたいのですが、 根本的に可能なのでしょうか…? よろしくお願いいたします。 変数やメソッド名の付け方 皆さんは変数名やメソッド名など、どういう感じで付けていますか? 私はいつも付けるときになって考えるんですが、うまく思いつかず、すぐに『aaa』『bbb』なんて感じにしてしまうんです。 暇なときに『名前の例の一覧』見たいなものを作ろうと思いながら、今日に至っています。 名前の付け方のコツみたいなものがありましたら教えて下さい。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
補足
ご回答ありがとうございます! すみません・・・詳しく説明して頂いたのに 頭が悪い為、いまいち意味がつかめていません・・・ なんとなくは分かるのですが・。 No.1の方の例題がどう表示されるのかも わからないのですが。