2016-04-14 16 views
-2

我有一個附加到購物車的形式$ _ POST的所有數據,並存儲到一個二維數組,並分配給會話所需:PHP POST數據分配給二維數組

例如的print_r( $ _POST)是:

Array("prod"=>"ZIU%3D","price"=>"68.00","alt-variation-1"=>"Red","alt-variation-2"=>"L","qty"=>"1") 

循環每$ _POST:

foreach($_POST as $field => $value){ 
    $f[] = $field; 
    $v[] = $value; 
} 

我尋找一種方法來分配上述$ f和$ v到一個數組,例如:

$new_product = array(array($f => $v)); 

和存儲在象一個會話:

$_SESSION['products'] = $new_product; 

或代替任何替代方式是什麼?

+1

請向我們展示'print_r($ _ POST)'的結果' – rybo111

+0

你的循環可以簡化爲'$ f = array_keys($ _ POST); $ v = array_values($ _ POST);'。雖然下一步你似乎想重新將它組合成一個鍵值數組......在我看來,你可以跳過整個舞蹈並做一個直接的'$ _SESSION ['products'] [] = $ _POST' ......! – deceze

+0

其次,您收到的是JSON,還是它爲什麼看起來像? – deceze

回答

1

$_SESSION['products'][] = $_POST;會將整個帖子數組附加到會話產品數組中,但您需要驗證用戶發佈的數據。

一個更好的辦法是:

$data = $_POST; 
// sanitise and validate $data here 
$_SESSION['products'][] = $data; 

爲@HamzaZafeer一個例子:

foreach($_SESSION['products'] as $product){ 
    echo $product['price']; 
} 
+0

明天我會在工作場所嘗試它,因爲腳本現在不在我身邊,會再次更新你。謝謝你。 – conmen

+0

@ rybo111讓陣列中有一個價格,但是我怎麼能從這個'$ _SESSION ['products'] []' –

+0

@HamzaZafeer得到價格,這將在產品數組的循環中完成。看我的編輯。 – rybo111

-1

您可以將陣列編碼爲JSON,並將其與存儲在session

$myJson = json_encode($_POST); 
$_SESSION['myJson'] = serialize($myJson); 
+0

'在會話中serialize'd JSON ?!爲什麼在地球上......!? – deceze

+0

爲什麼這不是一個好主意?只是好奇? – DasSaffe

+0

由於'JSON'由一個字符串表示,因此序列化會過度殺傷 – DarkBee