文字列を配列定義に使用する方法と仕組み

このQ&Aのポイント
  • 文字列を配列の定義に使用する方法についてご質問いただきました。
  • 具体的な例として、変数を配列として定義する場合と文字列として定義する場合について詳しく説明いたします。
  • また、変数に代入した場合に、配列として認識させる方法についてもご紹介します。
回答を見る
  • ベストアンサー

文字列を配列定義に使用するには

文字列を配列の定義に使用したいのですが、可能でしょうか? 具体的には以下のような内容です。  $AAA = array("name"=>"山田","val"=>"10"); とすると変数$AAAは配列になります。  $BBB = 'array("name"=>"佐藤","val"=>"20")'; とすると変数$BBBは文字列になります。  $CCC = $BBB; と変数$CCCに代入した場合に、 変数$CCCを配列として認識させたいです。 つまり  print $CCC[name]; //佐藤  print $CCC[val]; //20 というように出力させたいのですが、 根本的に可能なのでしょうか…? よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数1

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

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

こんな風にしてみるとよいです evalは使い方を間違えるととんでもないことになりかねないので 十分推敲してから投入するようにしてください <?PHP $BBB = 'array("name"=>"佐藤","val"=>"20")'; $CCC = eval("return ".$BBB.";"); print_r($CCC); ?>

duowhite
質問者

お礼

ありがとうございます。 お教えいただきました方法で動作いたしました。 非常に助かりました。 まさかこんな方法があったなんて…。

関連するQ&A

  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • 多次元配列?配列のキー?変数の型?

    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]; //出力されない

    • ベストアンサー
    • PHP
  • 文字列をスカラー変数として認識させるには?

    for文で合成して出来た文字列をスカラー変数として認識させたいのですが、 どうすればよいのでしょうか? ################################################# $qty1 = 'aaa'; $qty2 = 'bbb'; $qty3 = 'ccc'; $qty4 = 'ddd'; $qty5 = 'eee'; $qty6 = 'fff'; $qty7 = 'ggg'; $qty8 = 'hhh'; $qty9 = 'iii'; for ($i=1; $i<10; $i++){    $tmp = '$qty'.$i;    print "$tmp\n"; } ################################################# 自分としては、「aaa、bbb、ccc.....」のように、代入された値の羅列としてプリントされて欲しいのですが、 実際は「$qty1、$qty2、$qty3......」として、そのまま表示されてしまいます。 ご教示お願い致します。

    • ベストアンサー
    • Perl
  • 2つの配列を比較し、一致しないのを得たいのですが

    連想配列 $foo = array( "aaa" => "111", "bbb" => "222", "ccc" => "333" ); と 一般配列 $bar = array( 0 => "aaa", 1 => "bbb" ); がある場合に、$iを数字として、 $fooのkey部と$bar[$i]の値が一致したら(つまり、例えばaaa)、 $fooの中のその部分は除去するような事がやりたいのですがどのようにすればいいのでしょうか? 色々試してみましたが、自分には全く出来ませんでした。 除去ではなく、新しい配列に $hoge = array( "ccc" => "333" ) のような形で入れ込むのでもいいのですが、とくかく$hogeのような配列を手に入れたいと考えております。 アドバイス頂けないでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 変数の中身をある文字列を基準として分解したいです。

    変数の中身をある文字列を基準として分解したいです。 phpで変数の中身をある文字列を基準として分解したいです。 例として $value = "aaa,bbb,ccc,ddd,eee,"; $valeの中身を","を基準として取り出したいのですが可能でしょうか? 1件目:aaa 2件目:bbb 3件目:ccc 4件目:ddd 5件目:eee のような感じで画面に表示したいです。 ご教示、よろしくお願いします。

    • ベストアンサー
    • PHP
  • sedで「(~)」を使って文字列の一部を取り出し

    sedで「(~)」を使って、文字列の一部を取り出したいのですが期待した結果になりません。 以下のようなファイルがあります。 そこから、最初に見つかった「A-Z0-9」を含む文字列を取り出したいのですが、 どうしても、2番目にでてくる「0-9」でなる文字列が取り出されます。 環境は、Solaris/Linuxになります。 ■ファイル cat aaa "aaa","bbb","ccc","123456","ddd","eee","fff,"0000","ggg" "aaa","bbb","ccc","AAA123","ddd","eee","fff,"0000","ggg" ■sed sed 's/.*,"\([A-Z0-9].*[0-9]\)",.*$/\1/g' aaa ■結果 0000 0000 期待する結果は、 123456 AAA123 なのですが、 期待した結果を取り出すにはどうしたらよいのでしょうか。

  • C#で配列の使い方について教えて下さい(>ε<)/

    C#で配列の使い方について教えて下さい。(>ε<)/ やりたいこととして ・テキストファイルを読み込みます ・複数の指定文字列を探します ・見つかったら“指定文字列+新しい文字列”で置換します。 これを配列を用いてやりたいのですが、いまいちループの使い方がわからなくて・・・ 例えばテキストファイルはこんな形式とします。 [test.txt] あああ いいい ううう AAA BBB CCC 000 111 222 ンンン ヲヲヲ ワワワ [test.cs] string[] array = {"あああ", "000", "ヲヲヲ"}; string[] array2 = {"AAAAAAAAAAAAAAAAAAA", "ぜろぜろぜろ", "長渕長渕長渕長渕長渕長渕長渕"}; ? 指定文字列が上記のようだったとします。 この文字列が見つかったら例えばテキストファイルの中身を あああAAAAAAAAAAAAAAAAAAA いいい ううう AAA BBB CCC 000ぜろぜろぜろ 111 222 ンンン ヲヲヲ長渕長渕長渕長渕長渕長渕長渕 ワワワ このようにリプレースしたいのですが、どのようなループを用いれば良いのでしょうか?

  • エクセルの文字処理

    以前に同じ様な質問があったかも知れませんが、探しきれなかったので教えてください。 A1~A4の4つのセルに以下のスペースが入った文字列が入っていた場合 A1|AAA A2|AAA BBB A3|AAA BBB CCC A4|AAA BBB CCC DDD    A   B   C   D  1|    AAA 2|AAA BBB 3|AAA BBB CCC 4|AAA BBB CCC DDD という具合にしたいのです。 条件は  ・セル内にスペースで区切られない文字列があった場合には、B列に入れる  ・それ以外はスペースで区切って、A列B列C列D列に入れる  ・文字数は3文字固定ではなく全角半角が混在 以上です。すいません宜しく願いします。

  • PHPの文字列の中に<>を入れると、その中が消える

    PHP初心者です。 例えば、下記のように変数に文字を入れたいです。 $text = "aaa<bbb>"; そうすると、なぜか、<>の中身が消えてしまうのですが、 このような場合、どうしたら良いでしょうか? echo $text; とすると、 aaa し表示されません。 試しに、 $text = "aaa<bbb>ccc"; とすると、aaaccc と表示されます。 ちなみに、mail()関数の中のheader要素を代入する際にこの問題にぶちあたっています。 smartyを使っています。※初期設定のみで何もしていません。 分る方がいましたら、ご助言いただけるとうれしいです。

  • 【超初歩】配列に格納した文字列を書き出すには?

    配列である、$arrMyString[] に、 aaa@example.com bbb@example.com ccc@example.com ddd@example.com eee@example.com といった5種類の文字列が格納されているとします。 これを、半角カンマ+半角スペースでつないで書き出す(echo)にはどのような方法がありますか。 なお、最後の文字列の後ろには不要です。 ■書き出しイメージ aaa@example.com, bbb@example.com, ccc@example.com, ddd@example.com, eee@example.com

    • ベストアンサー
    • PHP

専門家に質問してみよう