2013-02-09 62 views
1

假設我有以下PHP代碼,它嘗試從名爲$arr的數組中讀取數據,該數組的值爲 {全名,學號,電子郵件}。在提交我的HTML表單後,此PHP代碼將執行foreach循環,並將發佈到頁面的值存儲在$_SESSION數組中。表單提交:在foreach循環中的PHP S_SESSION語句

foreach($arr as $field): 
    $_SESSION[$field] = $_POST[$field]; 
endforeach; 

上述代碼不能按預期工作。如果我要用下面的代碼替換上面的代碼塊,我的頁面上的字段中的值將正確存儲在$_SESSION陣列中。

$_SESSION[fullname] = $_POST[fullname]; 
$_SESSION[studentnumber] = $_POST[studentnumber]; 
$_SESSION[email] = $_POST[email]; 

如何以高效和可擴展的方式實現這一目標?我不希望每次向表單添加新字段時都必須編寫新的$ _SESSION語句。

編輯://第一個代碼塊實際上按預期工作。最初有一個錯字!

+0

你有什麼_should_工作,提供'$ arr'填充作爲數組'$ ARR =陣列('全名','studentnumber','email')' – 2013-02-09 00:41:15

+0

鑑於你有沒有引號的數組鍵,我們必須假設你沒有打開錯誤報告,所以在你的代碼中可能會有一些其他問題。 '的error_reporting(E_ALL); ini_set('display_errors',1);'你會看到一堆關於使用未定義常量的通知..這些數組鍵應該像'$ _SESSION ['fullname']' – 2013-02-09 00:42:36

+0

一樣被引用。 $ POST中有一個輸入錯誤;它應該是$ _POST!不能相信我忽視了那一個。感謝Michael和@asifrc的回覆。對不起,以瑣碎的方式打擾你們。 – Kevcom 2013-02-09 02:11:10

回答

0

你想要的是使用array_keys()否則你會得到數組內容。

foreach (array_keys($arr) as $field) 

讓我知道,如果這個工程/是你在找什麼:)

+0

我在找的是在我的頁面中使用字段元素的實際名稱,而不是增量。在第二個代碼塊中,我使用變量_fullname_,_studentnumber_和_email_。我想從'$ _POST'中抓取這些值,並將其插入到foreach循環中的$ _SESSION數組中,就像它們的字段名一樣。 – Kevcom 2013-02-09 01:12:32

+0

實際上,我的代碼應該是'foreach(array_keys($ _ POST)'作爲$ field)',但是如果您使用$ arr,那麼這會更安全。你有沒有@邁克爾的建議添加引號?我的第一個猜測是.. – asifrc 2013-02-09 01:33:17