• ベストアンサー

2次元配列の値の受け渡しについて教えてください

お世話になります。 phpで2次元配列の値の受け渡しについて教えてください。 A.phpファイルからB.phpファイルに2次元配列の値を渡したいと考えています。 出来ればPOSTで2次元配列を送りたいと考えていますが、そもそもPOSTで2次元配列を送ることはできるのでしょうか? たとえば [A.php] $DATA = array( array('name'=>"tanaka", 'age'=>"20"), array('name'=>"sasaki", 'age'=>"30"), ); をB.phpファイルに送るにはどうすれば良いのでしょうか? どなたか教えて頂けないでしょうか? よろしくお願いします。

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

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

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

http://us.php.net/en/function.serialize で一つの文字列にして http://us.php.net/en/function.unserialize で受け取る。 #悪意ある人がPOSTで変な送ってくるようなのを防ぐためにローカルファイルを経由したほうがいいのではないかという気がする

kon0203
質問者

お礼

遅くなってすいません。 >#悪意ある人がPOSTで変な送ってくるようなのを防ぐためにローカルファイルを経由したほうがいいのではないかという気がする セキュリティにやはり問題がありそうですね。 もう少し違う方法を考えてみますね。 ありがとうございました。

その他の回答 (2)

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

文字列を経由するならやはりserializeでしょうね クォーテーションの問題も考えるとurlencodeしておいた方がよいですね //X.php <? $DATA = array( array('name'=>"tanaka", 'age'=>"20"), array('name'=>"sasaki", 'age'=>"30") ); $dataStr=urlencode(serialize($DATA)); print <<<eof <form action ="Y.php" method="post"> <input type="hidden" name="DATA" value="{$dataStr}"> <input type="submit" value="go"> </form> $dataStr eof; ?> //Y.php <? $data=$_REQUEST["DATA"]; $data=unserialize(urldecode($data)); print_r($data); ?> ただし、#2さんの指摘もあるとおり、ユーザーに任意に書き換えられてしまう 危険が高いので、ふつうはこんなことはしません。

kon0203
質問者

お礼

返事遅くなってすいません。 <input type="submit" value="go"> を使うとユーザーに「go」ボタン押下のアクションが必要ですが、 そうではなく、アクションなしにB.phpファイルに送りたかったのですが。 そもそも説明不足でした。。。 すいません。 ご指摘通りセキュリティに問題があるなら他の方法を考えないとです。 ・2次元配列をばらしてGETでB.phpに送信 ・B.phpで値を受け取って2次元配列に組み立て。 こんな感じでやってみようかと考えています。

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

普通はセッションつかいますね //A.php <? session_start(); $DATA = array( array('name'=>"tanaka", 'age'=>"20"), array('name'=>"sasaki", 'age'=>"30"), ); $_SESSION['DATA'] =$DATA; ?> <a href="B.php">B</a> //B.php <? session_start(); $DATA=$_SESSION["DATA"] print_r($DATA); ?>

kon0203
質問者

補足

回答ありがとうございます。 私もSESSIONは考えましたが、 色々都合が悪くSESSIONではなくPOSTと考えていました。 POSTではむりなのでしょうか・・・・

関連するQ&A

  • フォームを通さずに2次元配列の値の受け渡しについて教えてください

    お世話になります。 以前にも質問させて頂きましたが、うまくいかずもう1度質問させてください。 phpで2次元配列の値の受け渡しについて教えてください。 A.phpファイルからB.phpファイルに2次元配列の値をフォームを通さずにPOSTで渡したいと考えています。 処理上、2次元配列のままB.phpファイルに値を渡したいと考えています。 そもそもPOSTで2次元配列を送ることはできるのでしょうか? その他の方法で2次元配列のままB.phpファイルに渡すことが出来るのであれば、その方法も教えて頂きたいのですが。 たとえば [A.php] $DATA = array( array('name'=>"tanaka", 'age'=>"20"), array('name'=>"sasaki", 'age'=>"30"), ); をB.phpファイルに送るにはどうすれば良いのでしょうか? ※2次元配列のサイズは可変です。 どなたか教えて頂けないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP 多次元配列変数のデータ受け渡し。

    PHP 多次元配列変数のデータ受け渡し。 こんばんは。 先日からPHPでホームページを作成しています。 この度、二次元配列に代入した数値(文字列)を 二次元配列そのままで次のページに受け渡したいと考えています。 ※また、同時に新しく入力した値も受け取りたい。下記の name="data" の様に。 《1page.php》 → 《2page.php》 の受け渡しをする場合、 《1page.php》二次元配列作成 <?php for ($i=0; $i<10; $i++) { $test[] = array($_POST['moziretsu'],$_POST['suuretsu'],$_POST['suuretsu']); //文字・数字は毎回異なります。 } ?> <html> <body> <?= $test[2] ?><br> <?= $test[4] ?><br> <form action="2page.php" method="post"> <input type="text" name="data"><input type="submit" name="submit" value="次"> </form> </body> </html> 《2page.php》二次元配列受け取り <?php $aaaa = $_POST['data']; ?> で、新規に入力した数値は取得出来ても 二次元配列の $test はどの様に取得すれば宜しいのでしょうか? グーグル等で検索させてもらっても 希望の記事に辿り着かず困っております。 もしかしたら出来ないかも知れないので その場合は1page.phpで二次元配列をしないで 2page.phpにデータを送るり、2page.phpで二次元にする等の方法を考えなければなりませんし・・・。 書き方も悪くとても小さい初歩的な質問かとは思いますが 何卒、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 多次元配列の入れ替え

    いつもお世話になります。 PHPで多次元配列の入れ替えについて悩んでおります。 以下のようなデフォルトの配列から、整形後の配列 へ変換したいのですが、どのように扱ってよいか 頭が回らず困っています。 2次元目のクラスが等しいもののidをキーとして、 名前を値としたいのですが。。。 どうぞ宜しくお願いします(>へ<) //デフォルトの配列 Array (   [0] => Array     (       [id] => 1       [class] => A       [name] => 佐藤     )   [1] => Array     (       [id] => 2       [class] => A       [name] => 山下     )   [2] => Array     (       [id] => 3       [class] => B       [name] => 田中     )   [3] => Array     (       [id] => 4       [class] => B       [name] => 高橋     ) ) //整形後の配列 Array (   [A] => Array     (       [1] => 佐藤       [2] => 山下     )        [B] => Array     (       [3] => 田中       [4] => 高橋     )      )

    • ベストアンサー
    • PHP
  • 多次元配列

    初歩的な質問ですみません。 PHPプログラミングでの質問です。 仮に、多次元配列Aに、 Array( [0] => Array ( [0] => 6 ) [1] => Array ( [0] => 2 [1] => 1 ) [2] => Array ( [0] => 0 [1] => 5 [2] => 4 ) ) 多次元配列Bに、 Array( [0] => Array ( [0] => りんご ) [1] => Array ( [0] => ぶどう [1] => パイナップル ) [2] => Array ( [0] => みかん [1] => すいか [2] => メロン ) ) のように値が入っている場合、配列Aの値を参照して 値の大きいものから順に、それに対応する配列Bの値を取り出し、 あたらしい配列Cに代入する処理の書き方を教えて下さい。 上記の例ですと、配列Cが、 Array ( [0] => りんご [1] => すいか [2] => メロン [3] => ぶどう [4] => パイナップル [5] => みかん ) となるようにしたいです。 よろしくお願いします。 長文失礼しました。

    • ベストアンサー
    • PHP
  • 【Javascript】多次元配列の位置取得

    Javacript初心者です。 多次元配列の特定要素を含む配列の位置(何番目の配列要素か)を取得したいのですが、 わからず、お力を貸していただけないでしょうか。 下記testArrayにおいて、bloodの値に「ab」を持つ配列要素が何番目かを取得したいです。 この場合、「3」番目ということを取得したいです。 ---------- var testArray = [ {"name":"yamada","age":30,"weight":62,"blood":"a"}, {"name":"tanaka","age":28,"weight":58,"blood":"b"}, {"name":"kamimura","age":46,"weight":65,"blood":"o"}, {"name":"takahashi","age":21,"weight":70,"blood":"ab"} ]; ---------- 単純に、下記のようなindexOf要素では調べることができませんでした・・・ testArray.indexOf("ab") 多次元配列での要素の位置取得をお教えいただけませんでしょうか。

  • 多次元配列で特定キーが重複している箇所をランダムで

    PHP多次元配列で特定キーが重複している箇所をランダムで1つだけ表示したい ・id基準 ■元配列 Array (   [0] => Array     (       [id] => 5       [name] => "佐藤"       [age] => 5     )   [1] => Array     (       [id] => 5       [name] => "伊藤"       [age] => 7     )   [2] => Array     (       [id] => 5       [name] => "鈴木"       [age] => 12     )   [3] => Array     (       [id] => 8       [name] => "山田"       [age] => 17     )   [4] => Array     (       [id] => 8       [name] => "奈良"       [age] => 2     ) ■取得したいランダム結果配列例1 Array (   [0] => Array     (       [id] => 5       [name] => "佐藤"       [age] => 5     )   [3] => Array     (       [id] => 8       [name] => "山田"       [age] => 17     ) ■取得したいランダム結果配列例2 Array (   [1] => Array     (       [id] => 5       [name] => "伊藤"       [age] => 7     )   [4] => Array     (       [id] => 8       [name] => "奈良"       [age] => 2     ) ※1次元目のキーは元キーを維持していなくても構いません

    • ベストアンサー
    • PHP
  • foreachで多次元配列を生成

    こんにちわ。 配列をforeachでループさせて、それを多次元配列に入れていくことは可能でしょ うか? 例えば以下のようなデータがあるとします。 ---meibo.dat-------- c21<>田中<>21<>東京 c22<>佐藤<>22<>大阪 -------------------- ---test.php----------------------------------------------------- <? $list_meibo = file("meibo.dat"); foreach($list_meibo as $temp){    $i=split("<>",$temp);    $a=array($i[0] => array("name"=>$i[1],"age"=>$i[2],"ad"=>$i[3]),); } ?> ------------------------------------------------------------------- これでは $a=array("c21"=>array("name"=>"田中","age"=>"21","ad"=>"東京"), "c22"=>array("name"=>"佐藤",age"=>"21","ad"=>"大阪"),); という具合になってくれないでしょうか? これでいくと、配列の最後の要素のみデータに残ります。 どのようにしたらよいでしょうか? ご教授お願いします。

    • ベストアンサー
    • PHP
  • 多次元配列の形を保ちながら特定の箇所だけ値を変更

    PHP初心者 かつ 配列が苦手な私です。 勉強不足でありながら、助けを求めているのですが、どうにも時間がないので、どうかよろしくおねがいいたします。 多次元配列の形を保ちながら特定の箇所だけ値を変更したいのです。 $arrRet という多次元配列■Aを■Bのようにしたいのです。 つまり、キーがpriceだったらその値を消費税込の値にしたい のです。 $arrRet という名前は違う名前になってもかまいません。 ■A Array ( [0] => Array ( [date] = > 2012-06-01 11:11:11 [price] => 100 ) [1] => Array ( [date] = > 2012-06-02 22:22:22 [price] => 100 ) ) ■B Array ( [0] => Array ( [date] = > 2012-06-01 11:11:11 [price] => 105 ) [1] => Array ( [date] = > 2012-06-02 22:22:22 [price] => 105 ) ) ちなみに 消費税は$taxを使用します。 $taxの値は1.05が入っています。 こんな感じかな?と思うのですが、この後 なにをどうしたらよいのか全然わからないんです。 foreach($arrRet as $key1 => $aa) { foreach($aaas $key2 => $bb) { } } よろしくおねがいいたします!!

    • ベストアンサー
    • PHP
  • 二次元配列のソート PHP

    タイトルのとおりソートを行ってくれる関数を探しております。 $buf[][]の二次元配列の変数を日付の降順に並べ替えたいのですが、そういった関数は用意されていますか? sort()、rsort()では不可能かと思います。 以下、二次元配列の値です。配列三番目の日付の降順で再格納したいです。 ( [0] => Array ( [0] => 1[1] => name1 [2] => 2006-08-18 ) [1] => Array ( [0] => 2 [1] => name2[2] => 2006-08-28 ) [2] => Array ( [0] => 3[1] => name3 [2] => 2006-08-18 ) [3] => Array ( [0] => 4 [1] => name4[2] => 2006-08-18 ) よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 多次元配列を2次元の連想配列で表したい

    PHP初心者です。 $category = array( array( 'ライフ' ), array( 'デジタルライフ', array( '携帯・PHS' ), array( 'ワンセグ放送' ) ), array( '趣味', array( 'AV機器', array( 'オーディオ' ), ), ), ); このような多次元配列を $new_category = array( array( 'id'=> '1', 'parent_id' => '-', 'name' => 'ライフ', ), array( 'id'=> '2', 'parent_id' =>'-', 'name' => 'デジタルライフ', ), array( 'id'=> '3', 'parent_id' => '2', 'name' => '携帯・PHS', ), array( 'id'=> 4, 'parent_id' => '2', 'name' => 'ワンセグ放送', ), array( 'id'=> 5, 'parent_id' => '-', 'name' => '趣味', ), array( 'id'=> '6', 'parent_id' => '5', 'name' => 'AV機器', ), ); このような二次元配列に変換したいです。 parent_idを入れておく配列を作って、階層が深くなったら前の要素のIDを配列に入れ、浅くなったら配列の末尾の要素を消去する…みたいなことを考えてあれこれやってみたのですが、なかなかうまくいきません。 何か良い方法がありましたら、教えていただけるとありたがいです。 よろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう