0

我想知道如何遍历多维数组,这是我的代码和一些关于我在这里尝试实现的解释

我的阵列:-

$new_info = array(
"Serial_Numbers" => array(101, 102, 103, 104),
"Costs" => array(10, 9, 8, 8)
);

我想要的是通过使用当前设置为的键来获取数组 1 和数组 2 的值,正如您在上面的代码中看到的那样,“Serial_Numbers”和“Costs”。这听起来可能有点令人困惑,所以让我展示一下我打算如何处理从这些数组中获得的值:-

 $con=mysqli_connect("localhost","root","root","saved_new");
 // Check connection
 if (mysqli_connect_errno())
 {
 echo "Failed to connect, error is: " . mysqli_connect_error();
 }
$new_info = array(
"Serial_Numbers" => array(101, 102, 103, 104),
"Costs" => array(10, 9, 8, 8)
);
 foreach ($new_info as $insert_info) {
 $sql="INSERT INTO new_table (serial_no, cost)
 VALUES
 ('$insert_info['Serial_Numbers'], $insert_info['Costs']')";
 if (!mysqli_query($con,$sql))
 {
 die('Error: ' . mysqli_error($con));
 }
 echo "All records added" . "<br />";
 }
 mysqli_close($con);
 ?> 

让我再次总结一下,以便更好地理解;我想将名为“Serial_Numbers”的数组中的所有值添加到名为“serial_numbers”的列中的数据库中,并将名为“Costs”的数组中的所有值添加到我的数据库中名为“costs”的列中,以及我会的原因喜欢使用 foreach 循环来实现这一点是我希望它同时通过这两个数组并继续运行直到它用完值,这样,我可以根据正确的序列号和成本。

希望现在有意义,如果您希望我添加任何其他内容,请告诉我。

4

3 回答 3

3

您需要并行循环两个子数组,而不是使用嵌套循环,因此您将所有相应的元素作为对,而不是交叉产品。

foreach ($new_info['Serial_Numbers'] as $i => $serial) {
    $cost = $new_info['Costs'][$i];
    $sql = "INSERT INTO new_table (serial_no, cost) VALUES ('$serial', $cost)";
    ...
}

如果您重新组织数据结构以将相关元素保持在一起会更好:

$new_info = array(array('Serial_Number' => 101, 'Cost' => 10),
                  array('Serial_Number' => 102, 'Cost' => 9),
                  array('Serial_Number' => 103, 'Cost' => 8),
                  array('Serial_Number' => 104, 'Cost' => 8));

这似乎是您在循环中所期望的。

于 2013-10-23T17:20:52.463 回答
1

尝试这个:

for ( $i = 0; $i <= count($new_info['Serial_Numbers']); $i++ )
{
   echo $new_info['Serial_Numbers'][$i].'<br />';
   echo $new_info['Costs'][$i];
}

这将计算子数组中的条目数量,然后您可以通过 $i 访问每个索引。

于 2013-10-23T17:21:56.923 回答
0

如果您的序列号是唯一的,那么您可以像这样使用普通数组。

$new_info = array(101=>10,102=>9,103=>8,104=>9);
foreach($new_info as $serial_number => $cost) {
}

如果序列号不是唯一的,则使用 Barmar 建议的方法。

于 2013-10-23T17:26:57.990 回答