PHPで配列をセッション変数にすることは可能ですか?
状況は、特定のページへのリンクを持ついくつかのセルを持つテーブル(ページ1)があることです。次のページには、それぞれのチェックボックスが付いた名前のリスト(セッション配列に保持したい2ページ目)があります。このフォームを送信すると、トランザクションページが表示されます(ページ3で、投稿されたチェックボックスの値が対応する名前のデータベースに保持されます)。さて、最初のページに戻って別のセルをクリックすると、セッション配列には新しい名前のリストまたは古いリストが含まれますか?
はい、セッションに配列を配置できます。例:
$_SESSION['name_here'] = $your_array;
これで、任意のページで$_SESSION['name_here']
を使用できますが、セッション関数を使用する前にsession_start()
行を必ず配置してください。コードは次のようになります。
session_start();
$_SESSION['name_here'] = $your_array;
可能な例:
session_start();
$_SESSION['name_here'] = $_POST;
これで、次のような任意のページでフィールド値を取得できます。
echo $_SESSION['name_here']['field_name'];
質問の2番目の部分については、異なる配列データを割り当てない限り、セッション変数はそのまま残ります。
$_SESSION['name_here'] = $your_array;
セッションの有効期間はphp.iniファイルに設定されます。
session_start(); //php part
$_SESSION['student']=array();
$student_name=$_POST['student_name']; //student_name form field name
$student_city=$_POST['city_id']; //city_id form field name
array_Push($_SESSION['student'],$student_name,$student_city);
//print_r($_SESSION['student']);
<table class="table"> //html part
<tr>
<th>Name</th>
<th>City</th>
</tr>
<tr>
<?php for($i = 0 ; $i < count($_SESSION['student']) ; $i++) {
echo '<td>'.$_SESSION['student'][$i].'</td>';
} ?>
</tr>
</table>
最初にimplode()関数を使用して配列を文字列に変更します。例:$number=array(1,2,3,4,5,...); $stringofnumber=implode("|",$number);
その後、文字列をセッションに渡します。たとえば$_SESSION['string']=$stringofnumber;
ので、配列を使用するページに移動するときは、文字列を展開するだけです。例:$number=explode("|", $_SESSION['string']);
最後にnumberはあなたの配列ですが、各ページの配列を忘れずに開始してください。