我想知道如何遍历多维数组,这里是我的代码和我在这里想要实现的一些解释
我的数组: -
$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循环实现这一点,我希望它同时通过这两个数组并继续运行,直到它耗尽值,这样,我可以根据数据库更新数据库中的信息正确的序列号和它的成本。
希望现在有意义,如果您希望我添加任何其他内容,请告诉我。
答案 0 :(得分: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));
这似乎是你在循环中所期待的。
答案 1 :(得分:1)
试试这个:
for ( $i = 0; $i <= count($new_info['Serial_Numbers']); $i++ )
{
echo $new_info['Serial_Numbers'][$i].'<br />';
echo $new_info['Costs'][$i];
}
这将计算子阵列中的条目数量,然后您可以通过$ i访问每个索引。
答案 2 :(得分:0)
如果您的序列号是唯一的,那么您可以像这样使用普通数组。
$new_info = array(101=>10,102=>9,103=>8,104=>9);
foreach($new_info as $serial_number => $cost) {
}
如果序列号不是唯一的,那么请使用Barmar建议的方法。