noshi’s diary

ゲームの事、映画やドラマ、思いついた事、プログラミングの事、雑記的なことを書いています

php 配列のデータを受け取る

配列のデータを隠し項目で渡すときに、うまく渡せなかったので、その解決法をメモしときます。 配列に値を格納して隠し項目でPOSTする場合、そのままvalue属性に「value="<?php echo $array;?>"」と配列を指定しても、うまくデータを受け渡すことはできません。 その場合、serialize関数で配列の要素を一続きの文字列に変換して、base64_encode()関数でエンコードすると、隠し項目に格納できるようになります。 その上で、今度は配列を受け取る側で上記の処理を逆に行うと、うまく配列のデータを処理できました。

<?php
//配列を定義する
$array
= array("menu" => "カレー", "price" => "380", "date" => "2013-01-01");
//フォームから送信された配列を取得する
echo "<p>配列の内容(エンコードした場合):";
print_r(unserialize(base64_decode(@$_POST["ar_enc"])));
echo "<p>配列の内容(エンコードしない場合):";
print_r(@$_POST["ar"]);
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
<input type="submit" value="送信" name="sub5" />
<input type="hidden" name="ar" value="<?php echo $array;?>" />
<input type="hidden" name="ar_enc"
value="<?php echo base64_encode(serialize($array));?>" />
</form>