2011-02-05 9 views
1

での保存後の値は、セッション配列にPOSTを経由して送信します。私は値を保存するセッション配列

$reply = array('thread_id', 'reply_content'); 

$_POST['thread_id'] = 2; # test it 

$_SESSION['reply'] = array(); 



foreach ($reply as $key) 
{ 
    if (in_array($key, $_POST)) 
    { 
     $_SESSION['reply'][$key] = $_POST[$key]; 
    } 
} 

var_dump($_SESSION['reply']); 

たとえば、私はキーのthread_idは 'と「thread_content」がポストに送信されているかどうかを確認したいですそれらがある場合、同じキーを使用してreplyというセッション配列に保存したいと思います。例えばので

「なthread_idは」POSTを経由して送信された場合:

$_POST['thread_id'] = 'blah'; 

その後、これは同じキーを使用して、「返信」と呼ばれるセッションに保存されて取得する必要があります:

$_SESSION['reply']['thread_id'] = 'blah'; 

どのようにすることができますこれが行われる?

+0

あなたが書いたコードは動作しませんか?あなたはそれを行う方法を尋ねていますが、あなたの質問にはそれを行うためのコードが含まれています。 –

+0

'$ _SESSION ['reply'] ['thread_id'] = $ _POST ['thread_id];'として保存してください。 – Shoe

+0

これは動作していないようです... – jonnnnnnnnnie

答えて

0

使用すると、この一般的に

$reply = array('thread_id', 'reply_content'); 

    $_POST['thread_id'] = 2; # test it 

    $_SESSION['reply'] = array(); 
    foreach ($reply as $key) 
    { 
     if (isset($_POST[$key])) 
     { 
      $_SESSION['reply'][$key] = $_POST[$key]; 
     } 
    } 
+0

なぜissetは動作し、in_arrayは動作しないと思いますか? – Ass3mbler

+0

これは不思議にも十分な作品です!なぜ誰が知っている? – jonnnnnnnnnie

+2

in_arrayはキーではない値をチェックします。 – Gaurav

2

、あなたのアプローチが有効になりますが、私はあなたがセッションデータを永続化する必要があるsession_start()を呼び出すことがないかもしれないことを推測するつもりです。 $needle

session_start(); 

if(!$_SESSION['POST']) $_SESSION['POST'] = array(); 

foreach ($_POST as $key => $value) { 
    $_SESSION['POST'][$key] = $value; 
} 

var_dump($_SESSION['POST']); 
1

in_array($needle, $haystack)チェックが$haystackの値としない鍵です。代わりにarray_key_existsまたはissetを使用します。

foreach ($reply as $key) 
{ 
    if (array_key_exists($key, $_POST)) 
    { 
     $_SESSION['reply'][$key] = $_POST[$key]; 
    } 
} 

または:

$_SESSION['reply'] = array_merge($_SESSION['reply'], array_intersect_key($_POST, array_flip($reply))); 
関連する問題