web-dev-qa-db-ja.com

セッション変数としての配列

PHPで配列をセッション変数にすることは可能ですか?

状況は、特定のページへのリンクを持ついくつかのセルを持つテーブル(ページ1)があることです。次のページには、それぞれのチェックボックスが付いた名前のリスト(セッション配列に保持したい2ページ目)があります。このフォームを送信すると、トランザクションページが表示されます(ページ3で、投稿されたチェックボックスの値が対応する名前のデータベースに保持されます)。さて、最初のページに戻って別のセルをクリックすると、セッション配列には新しい名前のリストまたは古いリストが含まれますか?

63
anurag-jain

はい、PHPはセッション変数として配列をサポートしています。例については、 このページ を参照してください。

2番目の質問に関しては、セッション変数を設定すると、変更するか unset になるまで同じままです。したがって、3番目のページでセッション変数が変更されない場合、2番目のページで再度変更されるまで同じままです。

67
Kaleb Brasee

はい、セッションに配列を配置できます。例:

$_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ファイルに設定されます。

詳細はこちら

73
Sarfraz
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>
4
Sanjoy

最初にimplode()関数を使用して配列を文字列に変更します。例:$number=array(1,2,3,4,5,...); $stringofnumber=implode("|",$number);その後、文字列をセッションに渡します。たとえば$_SESSION['string']=$stringofnumber;ので、配列を使用するページに移動するときは、文字列を展開するだけです。例:$number=explode("|", $_SESSION['string']);最後にnumberはあなたの配列ですが、各ページの配列を忘れずに開始してください。

1
muhammad sirajo