Php 隐藏域中的多维数组

Php 隐藏域中的多维数组,php,sql,arrays,Php,Sql,Arrays,我有一个表单,试图通过隐藏字段传递值。当我传递一个ID和一个数量时,它们会被发送到两个单独的数组中。我想在一个隐藏字段中的同一多维数组中发送这两个,这可能吗 以下是我的PHP代码: if(isset($_SESSION["cart"])) { foreach ($_SESSION["cart"] as $id => $value) { $ids .= $id . ','; $count += $value['quantity'];

我有一个表单,试图通过隐藏字段传递值。当我传递一个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[]"/>
if(isset($\u会话[“购物车])){
foreach($\u会话[“购物车”]作为$id=>$value){
$id.=$id.,';
$count+=$value['quantity'];
$totalPrice+=$value['price']*$value['quantity'];
} 
$query=$database->find\u item\u db($ids);
foreach($query作为$single\u查询){
$id=$single_query['Sweet_id'];
$stock\u level=$database->get\u stock($id);
$stock_quantity=(int)$stock_level[0]['quantity'];
echo$single_查询['Description'];?>x

您目前正在为每个糖果添加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>'; ?>

}

我不知道你为什么需要这个,因为你可以只使用
$\u输入['name']
vars与往常一样。而且
JSON
字符串可能会变得非常大,而且会非常奇怪。

您现在为每个糖果添加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>'; ?>

}

我不知道你为什么需要这个,因为你可以像往常一样使用
$\u输入['name']
变量。而且
JSON
字符串可能会变得非常大,而且会很奇怪。

一个简单的解决方案是序列化数组,然后直接回显到隐藏字段中

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

取消序列化后,您将数组恢复到以前的状态

一个简单的解决方案是序列化数组,然后直接回显到隐藏字段中

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

取消序列化后,您将数组恢复到以前的状态

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

}

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

}

您可以将其作为
json
字符串表示形式发送(
json\u encode
),将一个
隐藏的
字段设置为json,但我看不出这种方法背后的原因。。你想实现什么?@Pogrindis我想传递数据,因此当单击按钮时,我可以使用这些值编辑数据库,并使用PHPCan添加一个要传递表单的数组结构示例?不要通过隐藏字段传递值-而是将其存储在会话中。您可以将其作为
json
字符串表示形式发送(
json\u encode
),将一个
隐藏的
字段设置为json,但我看不出这种方法背后的原因。。你想实现什么?@Pogrindis我想传递数据,因此当单击按钮时,我可以使用这些值编辑数据库,并使用PHPCan添加一个要传递表单的数组结构示例?不要通过隐藏字段传递值-而是将其存储在会话中。