2

次のようなセッション変数を設定したいと思います。

$key = '_SESSION[element]';
$$key = 'value';

これは実際に に$_SESSION['element']等しく設定されますvalueが、残りの$_SESSION変数もクリアされているようで$_SESSION、新しいキーと値のペアのみを含む配列になります。

nuking せずに変数変数を使用してセッションに書き込むにはどうすればよいですか?

編集:これができない場合は、おそらく再構築して「正しい」方法で行う必要があります。簡単に直せる方法があれば知りたいです

4

3 に答える 3

2

PHPドキュメントから:

変数変数は、関数またはクラス メソッド内の PHP のスーパーグローバル配列では使用できないことに注意してください。変数 $this は、動的に参照できない特殊な変数でもあります。

どうやってこのような状況になってしまったのか、本当に疑問です。あなたはおそらく何か間違ったことをしています。

編集

この小さなトリックは、あなたが望むものを与えるはずです:

$key = '_SESSION[element]';
$key = str_replace(array('_SESSION[', ']'), '', $key);
$_SESSION[$key] = 'value';
var_dump($_SESSION);

これは基本的に xdazz の回答と同じ結果を生成します

于 2011-10-14T06:14:40.940 に答える
2

@Mala、evalが役立つと思います。以下のコードを確認してください。それはあなたが望むものの助けになるかもしれません。

session_start();
    $_SESSION['user1'] = "User 1";
    $_SESSION['user2'] = "User 2";

    $key = "_SESSION['user3']";
    eval("\$$key = 'User 3';");

    foreach ($_SESSION as $key=>$value){
        echo $key." => ".$value."<br/>";
        unset($_SESSION[$key]);
    }
    session_destroy();

それでも問題が解決しない場合は、お知らせください。ありがとうございました

于 2011-10-14T07:06:51.413 に答える
1

こっちの方がいいんじゃない?

$key = 'element';
$_SESSION[$key] = 'value';
于 2011-10-14T06:34:07.023 に答える