PHPの記述に関する質問です。以下のようなプログラムを書いて、最終的に1が出力されるようにしたいのです。しかし以下の記述だと$aaa_BBBが表示されてしまうので困っています。何か良い方法はありませんか?


$aaa_AAA=0;
$aaa_BBB=1;
$ccc=”$” . ”aaa” . ”_BBB”;
echo $ccc;

なぜ$ccc=$aaa_BBBみたいな書き方をしないかというと、条件により$aaa_XXXのXXXが色々と変化するためです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答8件)

id:ke_ishi No.1

回答回数269ベストアンサー獲得回数0

ポイント10pt

URLはダミー

最後を

echo $$ccc;

にしてね。

id:kawasald

早速の回答ありがとうございます。

echo $$ccc;としたのですが、上手くいきませんでした。何が悪いのだろう??

$aaa_AAA=0;

$aaa_BBB=1;

$ccc=”$” . ”aaa” . ”_BBB”;

echo $ccc; //$aaa_BBBが出力

echo $aaa_BBB; //1が出力

echo $$ccc; //何も表示されず…。

2004/12/01 10:35:13
id:taknt No.2

回答回数13539ベストアンサー獲得回数1198

ポイント10pt

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k01.htm

PHP 基礎編1 - 開発環境、注釈、変数、配列、連想配列、演算子、特殊文字 - SAK Streets

このような場合、配列を使ったほうが便利ですよ。

$aaaとかにして の中に数字を入れてその数字を変えます。

id:kawasald

実は各変数も$aaa_XXX[100]のように配列になっていて条件によりその変数の指定番目の配列をとってくるようにしてあるのです。二次元配列を使うことも考えたのですがやっぱりXXXの部分は言葉で判別する必要になってしまったので上記の質問をしたのです。なんだかよく分からない説明になってしまいましたね。すみません。

2004/12/01 11:00:23
id:ke_ishi No.3

回答回数269ベストアンサー獲得回数0

ポイント25pt

すみません、間違ってますね。

$ccc = ’aaa’.’_BBB’;

echo $$ccc;

でした。$cccに入れる文字列の先頭の$は不要です

id:kawasald

おお!解決しました!

ありがとうございました。

こんな書き方が合ったのですね。まだまだ勉強不足です。

2004/12/01 11:01:42
id:bell87uta No.4

回答回数6ベストアンサー獲得回数0

ポイント10pt

可変変数で実現できます。

$aaa_AAA=0;

$aaa_BBB=1;

$ccc=”aaa” . ”_BBB”;

echo $$ccc;

id:kawasald

タッチの差で先に別の方の回答が出てしまいました。

でもありがとうございます!

2004/12/01 11:02:14
id:kuippa No.5

回答回数1030ベストアンサー獲得回数13

ポイント15pt

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k08.htm

PHP 基礎編8 - 配列操作、sort、asort、ksort、array_push、array_shift - SAK Streets

こんにちは。

PHPにも配列というものがあります。

おっしゃるような事はつぎのようなやり方で解決することができます。

$aaa[0]=0;

$aaa[1]=1;

$ccc=aaa[1];

echo $ccc;

条件により$aaa_XXXのXXXが変化するのであれば、この添え字を変更してあげればいいわけです。

id:kawasald

配列案も僅かの差で回答がでていました。

しかし詳しく説明していただき、ありがとうございました。

2004/12/01 11:03:19
id:m1038 No.6

回答回数27ベストアンサー獲得回数1

ポイント10pt

http://www.hatena.ne.jp/1101864250#

人力検索はてな - PHPの記述に関する質問です。以下のようなプログラムを書いて、最終的に1が出力されるようにしたいのです。しかし以下の記述だと$aaa_BBBが表示されてしまうので困っていま..

$aaa_AAA = 0;

$aaa_BBB = 1;

$ccc = ”aaa” . ”_BBB”;

echo $$ccc;

こうですね。

id:kawasald

完璧な回答ありがとうございました!

2004/12/01 11:03:52
id:kimbara No.7

回答回数638ベストアンサー獲得回数13

ポイント20pt

echo $ccc; の前に、

eval(”$ccc = ?”$ccc?”;”);

を入れてみてはいかがでしょう。

id:kawasald

ほーこんな記述もあるんですね〜。

ありがとうございました。

2004/12/01 11:04:17
id:html1983 No.8

回答回数72ベストアンサー獲得回数0

ポイント10pt

以下のような感じはいかがでしょうか。

$aaa_AAA=0;

$aaa_BBB=1;

$ccc=”aaa” . ”_BBB”;

echo $$ccc;

id:kawasald

これも的確な回答ですね。ありがとうございました。

以上で終了します。

皆様ありがとうございました。

また機会がありましたらよろしくお願いします。

2004/12/01 11:05:05
  • id:kimbara
    文字化け?

    私の回答したテキストのなかに、以下のようなものがあったのですが、送信後文字化けしているみたいです。
    > eval(”$ccc = ?”$ccc?”;”);

    たぶん2重引用符の直前に?が見えていると思いますが、これはバックスラッシュあるいは円記号(日本語システムの場合)に置き換えてください。
  • id:kawasald
    Re:文字化け?

    ご連絡ありがとうございます。
    最初おやっ?と思ったのですが、evalで検索してみたらevalの解説ぺーじに半角の¥が付いていたので無事に理解できました。
    半角のダブルクォーテーションも投稿すると全角になってしまいますね。はてな側で投稿文をサニタイジングしているのでしょうか。

    http://php.s3.to/man/function.eval.html
  • id:kawasald
    配列を含む場合

    配列を含む場合は可変変数が効かないみたいですね。
    $aaa_AAA[0]=0;
    $aaa_BBB[0]=1;
    $ccc=”aaa” . ”_BBB[0]”;
    echo $$ccc;

    配列を含めた変数の場合は
    $aaa_AAA[0]=0;
    $aaa_BBB[0]=1;
    $ccc=”$” . ”aaa” . ”_BBB[0]”;
    eval (”¥$ccc=¥”$ccc¥”;”);
    echo $ccc;
    とやればいいみたいです。

    http://php.s3.to/man/function.eval.html

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません