配列の内容をフォームデータとして送信する場合は、そのまま送信できないので、文字列に直す必要があります($_SESSIONを経由させる方法もありますが)。
implode関数やserialize関数を使うと配列を文字列にすることができますが、「”」のようなフォームのvalue属性に指定されると都合の悪い文字が含まれるので、base64_encode関数などを使って、フォーム属性値に使える値に加工する必要があります。
次の例では、配列をフォーム属性値に使える文字列$aに加工した後に、元の配列$bに戻しています。
<?php $ar = array("t"=>"東京", "c"=>"千葉", "k"=>"神奈川"); $a = base64_encode(implode($ar, ",")); // $aをhiddenフィールドなどのvalue属性に指定 echo "暗号化された配列:" . $a . "<br />"; $b = explode(",", base64_decode($a)); // 送信先の画面で$aを配列に戻す echo "元の配列:" . print_r($b, true); ?>
○実行結果
暗号化された配列:5p2x5LqsLOWNg+iRiSznpZ7lpYjlt50=
元の配列:Array ( [0] => 東京 [1] => 千葉 [2] => 神奈川 )
元の配列:Array ( [0] => 東京 [1] => 千葉 [2] => 神奈川 )