• 締切済み

セッションの宣言

PHPでセッションの配列を使いたいのですが、 $SESSION['foo'] = array(); のように、宣言して使うと、同じページを読んだ時に セッションが空になってしまうのですが、 通常どのようにして宣言しているのですか?

みんなの回答

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.3

ANo.2です。 普通の変数を配列として扱う場合と同様で、必ず配列として宣言が必要であるということはありません。 ただし、実際のコードを見ていないので不明な部分がありますが、値(配列)がセットされる前に配列として扱う処理(一部の配列関数など)があるとエラーを発生する可能性があるので、その場合は配列として宣言しておく必要があります。そのためにif分で分岐して必要に応じて配列として宣言するというのは妥当な処理だと思います。

devid
質問者

お礼

有難うございました。ひとまず、IF分で回避して 実行しています。

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.2

あらかじめ配列として定義されている必要がなければ宣言する必要もないですね。当たり前といえば当たり前ですが。 それよりセッション変数は$SESSIONではなく$_SESSIONですがそこは問題ないですか?

devid
質問者

補足

>$_SESSIONですがそこは問題ないですか? 失礼、問題ないです。 配列として使う場合は宣言が必要ですか? 現在、最初だけ$_SESSION['foo'] = array();宣言をして 同ページを読み込む時は、if文で$_SESSION['foo'] = array();を 避けるようにしています。 そうでないと、変数が再度初期化されてしまう。 なので、なにか良い方法が有るのかなと思い質問しました。

  • mizutaki
  • ベストアンサー率33% (111/333)
回答No.1

$SESSION['foo'] = array(); //セッションのfooの配列をクリアする なんか、少し勘違いしているのでは無いですか? セッションを行う場合は htmlデータを出力する前にsession_start()関数を利用する事で、 セッションを使用する事が出来るようになります。 session_start()は、その人の前のセッション情報を$_SESSIONに挿入して、 さらにリクエストしてきたユーザに対してセッションIDを発行する関数です。

devid
質問者

補足

session_start()は行っています。 $SESSION['foo'] = array(); の宣言無しに 配列変数は使用できるのでしょうか? 宣言無しでOK?

関連するQ&A