2016-02-19 70 views
0

我有一个表单,我试图通过隐藏字段传递值。此刻,我传递了一个ID和一个数量,他们被发送到两个单独的数组中。我想在同一个隐藏字段中将这两个数据发送到同一个多维数组中,这可能吗?隐藏字段中的多维数组

这是我的PHP代码:

if(isset($_SESSION["cart"])) { 

    foreach ($_SESSION["cart"] as $id => $value) { 

     $ids .= $id . ','; 

     $count += $value['quantity']; 

     $totalPrice += $value['price'] * $value['quantity']; 

    } 

    $query = $database->find_item_db($ids); 

    foreach ($query as $single_query) { 

    $id = $single_query['Sweet_ID']; 

    $stock_level = $database->get_stock($id); 

    $stock_quantity = (int)$stock_level[0]['Quantity']; 

    echo $single_query['Description']; ?> x <?php echo $_SESSION['cart'][$id]['quantity'] . '<a href="?idToRemove=' . $id . '&action=remove"> Remove </a>' . '</br>'; ?> 

    <input type="hidden" value="<?php echo $id; ?>" name="sweetids[][]"/> 
    <input type="hidden" value="<?php echo $stock_quantity;?>" name="quantites[]"/> 
+1

你可以通过把它作为一个'json'字符串表示('json_encode'),设置一个'hidden'字段作为JSON,但我看不出这种做法背后的原因。什么是你想实现 ? – Pogrindis

+0

@Pogrindis我想通过这样的数据,所以当单击一个按钮,然后我可以使用这些值来编辑数据库与PHP –

+0

你可以添加一个例子你想通过你的窗体的数组结构? – ThinkTank

回答

1

我会通过作为数组的隐藏字段发送它们,然后使用MultipleIterator类将它们分组到各自的数组中。

可能是这样的。

$iterator = new MultipleIterator(); 
$iterator->attachIterator (new ArrayIterator ($_POST['sweetids'])); 
$iterator->attachIterator (new ArrayIterator ($_POST['quantites'])); 
$iterator->attachIterator (new ArrayIterator ($_POST['stock'])); 

foreach ($iterator as $item) 
{ 
    $id = $item[0]; 

    $quantity = (int)$item[1]; 

    $stock = (int)$item[2]; 

    $new_stock = $stock - $quantity; 

    $database->update_stock($id, $new_stock); 

} 
0

你此刻加2个用于每个甜食,可能会更好打造甜美集合,然后用这个作为输入的值。

沿着以下几行。

$sweetCollection = array(); 

foreach ($query as $single_query) { 
    $sweet = array(); 
    // Set values 
    $sweet['id'] = $single_query['Sweet_ID']; 
    $sweet['level'] = $database->get_stock($sweet['id']); 
    $sweet['quantity'] = (int)$sweet['level'][0]['Quantity']; 
    // Add to array 
    array_push($sweetCollection, $sweet); 
    echo $single_query['Description']; ?> x <?php echo $_SESSION['cart'][$id]['quantity'] . '<a href="?idToRemove=' . $id . '&action=remove"> Remove </a>' . '</br>'; ?> 

} 

现在,当我们想要添加我们做的输入字段使用JSON如下:

<input type="hidden" value="<?php echo json_encode($sweetCollection); ?>" name="sweetCollection"/> 

我不知道为什么你需要这个,因为你可以只使用$_Input['name']瓦尔如常虽然。此外,JSON字符串可能会变得相当大,而且会很奇怪。

1

一个简单的解决方案是序列化数组,只是呼应成隐藏字段

<textarea name="name" style="display:none;"/> 
<?php echo serialize($data); ?> 
</textarea> 

后来与

unserialize($data); 

撤消反序列化你有你的阵列回来,因为它是

前,后