如何在 array_combine 中传递 3 个参数,这可能吗?

how to Pass 3 arguments in array_combine, is that possible?

i 有三个变量 ($product_id, $size_id, $quantity) 从 "form" 得到并插入 pending_order table.So i使用 array_combine 函数组合三个变量,而不是使用 for each 循环插入多条记录。但它显示错误

"Warning: array_combine() expects exactly 2 parameters, 3 given".

所以我完全卡住了,有没有其他方法可以将这三个变量传递到数组中,而不是使用每个循环来插入记录。

<form method="post" action="">

<input type="hidden" name="ip_address" value="<?php echo $ip_address; ?>">   
<input type="hidden" name="product_id[]" value="<?php echo $product_id; ?>">   
<input type="hidden" name="size_id[]" value="<?php echo $size_id; ?>"> 
<input type="hidden" name="quantity[]" value="<?php echo $quantity; ?>" >
<input type="submit"  name="submit" value="Confirm Your Order"> 

</form>

<?php
if (isset($_POST['submit'])) {
$product_id = $_POST['product_id'];
$size_id = $_POST['size_id'];
$ip_address = $_POST['ip_address'];
$quantity = $_POST['quantity'];

$array = array_combine($product_id, $size_id, $quantity);

foreach ($array as $h => $v) {

$insert_pending = "INSERT INTO pending_orders 
(cus_id,product_id,size_id,quantity,ip_address) VALUES 
('$cus_id','$h','$v','$quantity','$ip_address')";

 $run2 = mysqli_query($con, $insert_pending);

 }

if($run2===true){

 echo "<script>window.open('thanku.php','_self')</script>";
  }else{
 echo "<script>alert('Sorry, Try Again')</script>";

 }


 }

您可以只循环遍历其中一个数组,使用该数组中的索引访问其他数组中的相应值:

foreach ($product_id as $index => $h) {
    $v = $size_id[$index];
    $q = $quantity[$index];
    $insert_pending = "INSERT INTO pending_orders 
                            (cus_id,product_id,size_id,quantity,ip_address) VALUES 
                            ('$cus_id','$h','$v','$q','$ip_address')";
    $run2 = mysqli_query($con, $insert_pending);
}

请注意,$run2 将仅具有上次 INSERT 查询的状态。因此,如果除了最后一个以外,它们都失败了,您将一无所知。您可能想尝试在查询后将其添加到循环中:

if (!$run2) break;

然后在您的错误消息中您可以指出哪个插入失败,例如

echo "<script>alert('Insert failed for id $cus_id on data $h, $v, $q')</script>";