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で二次元にする等の方法を考えなければなりませんし・・・。
書き方も悪くとても小さい初歩的な質問かとは思いますが
何卒、宜しくお願いいたします。
No.4ベストアンサー
- 回答日時:
まずうまくいかない原因を。
最初の《1page.php》では
<?= $test[2] ?><br>
<?= $test[4] ?><br>
となっていますが、このままでは配列なので単に Array と表示されるだけで、しかもformの外にありますので何も送信されません。
それをhiddnでformに入れて送信する方法が #Ano2.mpxさんの方法です。
これで取得はできているはずですが、$testは配列なので print としてもArray と出るだけです。配列を確認するには、print_r($test); とする必要があります。
また、配列の各要素にアクセスするときの、'の位置が間違っています。
print $_POST['test[0][0]']; ではなく、
print $_POST['test'][0][0]; です。
■セッションを使用する方法:;
※セッションはアクセス中ずっと変数を保持し続けるので持ち廻るには大変便利ですが、これはこれでセッション特有のセキュリティ上の注意点がありますので、その方法等は適宜、検索して処理してください。
《1page.php》
文字やヘッダを出力する前に session_start(); とし、配列を生成したら、
$_SESSION['test'] = $test; としてセッションに保存します。
《2page.php》
使用したいページでもまず、session_start(); すれば、
print_r($_SESSION['test']);
で確認できるはずです。
もちろん配列の各要素にアクセスするには、$_SESSION['test'][0][0] 等になります。
No.3
- 回答日時:
yambejpさんの↓を最初に入れて、
$test=Array(Array(1,2,3),Array(4,5,6),Array(Array(7,8,9),Array(10,11,12)));
mpxさんのをコピペして、
2page.php を↓一行だけ書いて、
<? print_r($_POST); ?>
結果は ↓。
Array
(
[test] => Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => Array
[1] => Array
)
)
[data] => test
[submit] => 次
)
ちゃんと渡されているようですよ?
(最後、三次元になってるのでArrayになりますが)
No.2
- 回答日時:
《1page.php》内のformタグ内を以下のようにして試してみてください
<form action="2page.php" method="post">
<?php
foreach($test as $k0=>$v0){
foreach($v0 as $k1=>$v1){
echo"<input type='hidden' name='test[{$k0}][{$k1}]' value='{$v1}'>\n";
}
}
?>
<input type="text" name="data"><input type="submit" name="submit" value="次">
</form>
この回答への補足
先ほど上記の記述をコピーして試してみました。
データの受け取り部分に問題があるのか分からないのですが
上手くデータが受け取れませんでした。
受け取り側の記述は
《2page.php》
$test = $_POST['test'];
や
$test = $_POST['test[0][0]'];
を試してprintにて出力してみましたが表示されず、直接
print ($_POST['test']);
や
print ($_POST['test[0][0]']);
と記述しても表示不可能でした。
記述に問題があるのでしょうか・・・(´・ω・`)
ご迷惑でなければ
ご教授頂ければ幸いです。
宜しくお願い致します。
返答有難う御座います。
まだソースを実験した訳ではありませんが
コピー貼り付けで一度動作させてみたいと思います。
もし別の方法もあるようでしたら宜しくお願い致します。
No.1
- 回答日時:
まず第一にページに埋め込んだデータは悪意あるユーザーにより改変される可能性があることを
理解しなくてはいけません。
そのうえで、なおやりたいということであれば、serialize-unserializeで文字列にしてやれば
容易に受け渡しが可能です。
<?
$test=Array(Array(1,2,3),Array(4,5,6),Array(Array(7,8,9),Array(10,11,12)));
$x=serialize($test);
print $x;
$y=unserialize($x);
print_r($y);
?>
きちんとやるならやはりsessionをつかってやることです。
コメント有難う御座います。
利用者のデータ改変は特に問題はありません。
(そこまで重要な情報をやり取りする訳では無いので。)
やり方として態々記述頂いて有難う御座います。
もし宜しければセッションを利用した方法も
参考URLでも結構ですのでご誘導頂けませんでしょうか?
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
foreachのなかで次のキーを参照...
-
PHP 多次元配列変数のデータ受...
-
CSVデータのn番目だけの値を取...
-
$_SESSIONに二次元配列を使える...
-
unset使用時の利点
-
配列の書き方
-
String だと「 ByRef引数の型が...
-
multiple属性のPOSTを配列で受...
-
smartyのforeachの使い方
-
スカラーのベクトル微分
-
forとかで連番の変数を一気に格...
-
3つの連想配列を交互に代入し...
-
While文を使って配列の中身を全...
-
多次元配列をソートする綺麗な...
-
CSVデータの行数カウントをした...
-
プルダウンメニューにDBの内容...
-
多次元配列の一次元目の最大値...
-
ログファイルが一定行数を超え...
-
添え字が全て文字列のPHPの多次...
-
ヒアドキュメントの中のfor文
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
String だと「 ByRef引数の型が...
-
file_existsでファイル名の部分...
-
foreachのなかで次のキーを参照...
-
$_SESSIONに二次元配列を使える...
-
PHPのカッコ[ ]の使い方について
-
$_SESSIONについて教えて下さい。
-
配列を回すとき、最後の要素だ...
-
ネストが深い時のforeachはどう...
-
配列一致(要素順番は違うが内容...
-
PHPにてクラスを配列にすること...
-
配列の値の更新方法について
-
postgresql関数をつかったレコ...
-
PHPで配列をPOSTデータで送った...
-
PHP 多次元配列変数のデータ受...
-
漢字のソートについて
-
チェックボックスが複数選択で...
-
$_POSTを一括してサニタイズし...
-
smarty 同じ要素内で改行
-
配列のbindValue方法について
おすすめ情報