隐藏字段中的多维数组


Multidimensional Array in hidden field

我有一个表单,我试图通过隐藏字段传递值。在我传递 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[]"/>

我会通过隐藏字段将它们作为数组发送,然后使用 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);
}

一个简单的解决方案是序列化数组并回显到隐藏字段中

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

后来撤消

unserialize($data);

反序列化后,您的数组恢复了原样

您目前正在为每个糖果添加 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字符串可能会变得非常大并且会相当奇怪。