人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPについて質問です。

次のように複数のセッションを実行したいです。
if(isset($_SESSION['word'])){$word = $_SESSION['word'];}
if(isset($_SESSION['meaning'])){$meaning = $_SESSION['meaning'];}
if(isset($_SESSION['idiom'])){$idiom = $_SESSION['idiom'];}

セッションの項目が増えたり減ったりするので、
項目が増減したら、それにあわせてセッションする数も手間なく増減できるよう、
下記のようにしたのですがうまくいきません。
$itemsS = array('word','meaning','idiom');

$i = count($itemsS);
for($m=0;$m<$i;$m++)
{
if(isset($_SESSION["$itemsS[$m]"])){$$itemsS[$m] = $_SESSION["$itemsS[$m]"];
}

配列の要素を増減したら、それにあわせてセッションする数も自動的に増減することは可能でしょうか?
できるとしたらどのようにしたらよいでしょうか?基本的な質問で恐縮ですがよろしくご回答ください。

環境は最新のVista Home Premium、最新のXamppのPHP5、プラウザはIE,Firefoxです。
以上、よろしくお願いします。

●質問者: taroemon
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:firefox HOME IE PHP VISTA
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● araishi
●35ポイント
$itemsS = array('word','meaning','idiom');
foreach($itemsS as $key => $value){
 if(isset($_SESSION[$value])){
 $$value = $_SESSION[$value];
 }
}
このような感じでしょうか!
◎質問者からの返答

ご回答ありがとうございます。

うまく行きました。


2 ● ホーエンハイム
●35ポイント ベストアンサー

ご質問のスクリプトを訂正すると、下記のようになります。

$i = count($itemsS);
for ($m = 0; $m < $i; $m++) {
 if (isset($_SESSION[$itemsS[$m]])) {
 $$itemsS[$m] = $_SESSION[$itemsS[$m]];
 }
}

また、foreach を使って書くと2行で済みます。

foreach ($itemS as $var)
 if (isset($_SESSION[$var]) $$var = $_SESSION[$var];
◎質問者からの返答

ご回答ありがとうございます。

forを使った方はうまくいったのですが、どういうわけかforeachを使った方は私の環境だとうまくいきませんでした。

理由はわかりませんがそのままコピペすると「Parse error: syntax error, unexpected '$'」というエラーが出ます。

とはいえ上段のスクリプトではうまくいきました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ