2014-02-23 39 views
1

我是該網站的新成員,儘管之前我已經使用過它了。我搜索了一下我的問題的答案,但我似乎無法找到答案。所以我想我會在這裏發佈。傳遞關聯數組作爲複選框形式的值(PHP)

無論如何,在這個問題上。在我的代碼中,我想要做的是創建一個關聯數組,然後以某種方式通過$ _POST傳遞該值。我最近的想法是創建關聯數組,然後將json_encode用於字符串,將該字符串作爲複選框的值傳遞,然後通過$ _POST獲取字符串值並使用json_decode獲取該關聯數組。

所以說我有一個名爲$ array的關聯數組。我將對其進行編碼,如下所示:

$string = json_encode($array) 

然後我傳遞字符串作爲複選框的值:

<input type='checkbox' name='array[]' value='$string'> 

然後,一旦表格被提交時,它獲取associatives陣列(S)和更新一些$ _SESSION值:

foreach ($_POST['array'] as $element) 
{ 
    $array = json_decode($element,true); 
    array_push($_SESSION['array'], $array); 
    $_SESSION['sum'] = $_SESSION['sum'] + $array["price"]; 
} 

不過,我得到一個致命的錯誤,每次這個運行時,沿着「不支持的操作類型」指的是用$ _SESSION [「和」]行線的東西。每當我嘗試查看數組值(例如echo $ array [「price」]或echo $ array [「size」])時,我也會得到一個錯誤,這些錯誤是「數組到字符串轉換」。

任何人有任何想法?我很新的PHP(剛開始這個星期的學習它,如果你不能告訴)

+0

看起來這應該工作。如果您使用查看源代碼,您是否看到'value'屬性中的JSON? – Barmar

+0

嘗試在輸入循環之前回顯$ _POST ['array']。這可能是什麼問題。 – Kamehameha

回答

0

嘗試此複選框渲染:

<input type='checkbox' name='array[]' value="<?php echo $string; ?>"> 
+0

補充說明和代碼運行,但不幸的是它不會更新$ _SESSION變量(例如,不更新$ _SESSION ['sum'])。沒有更多的錯誤,雖然這是很好,謝謝! – user3342582

+0

添加session_start();在腳本的開頭 – Ramesh

+0

我在所有php文件的頂部都有session_start(),其中包括update.php,這是SESSION更新的地方。但是,在update.php中的腳本運行後,我通過使用header方法重定向到index.php,因此可能導致時髦行爲? – user3342582