Php 多维数组的Foreach
我想知道如何在多维数组中循环,下面是我的代码和一些关于我在这里尝试实现的解释 我的阵列:-Php 多维数组的Foreach,php,arrays,multidimensional-array,foreach,Php,Arrays,Multidimensional Array,Foreach,我想知道如何在多维数组中循环,下面是我的代码和一些关于我在这里尝试实现的解释 我的阵列:- $new_info = array( "Serial_Numbers" => array(101, 102, 103, 104), "Costs" => array(10, 9, 8, 8) ); 我想要的是通过使用数组1和数组2的键来获取数组1和数组2的值,正如您在上面的代码中所看到的,当前设置为“Serial_number”和“Costs”。这听起来可能有点混乱,所以让我展示一下我打算如
$new_info = array(
"Serial_Numbers" => array(101, 102, 103, 104),
"Costs" => array(10, 9, 8, 8)
);
我想要的是通过使用数组1和数组2的键来获取数组1和数组2的值,正如您在上面的代码中所看到的,当前设置为“Serial_number”和“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);
?>
$con=mysqli\u connect(“localhost”、“root”、“root”、“saved\u new”);
//检查连接
if(mysqli\u connect\u errno())
{
echo“连接失败,错误为:”.mysqli_connect_error();
}
$new_info=数组(
“序列号”=>数组(101、102、103、104),
“成本”=>数组(10,9,8,8)
);
foreach($insert\U info为$new\U info){
$sql=“插入新表格(序列号,成本)
价值观
(“$insert_info[‘序列号’],$insert_info[‘成本’])”;
如果(!mysqli_query($con,$sql))
{
die('Error:'.mysqli_Error($con));
}
回显“已添加所有记录”。
;
}
mysqli_close($con);
?>
让我再总结一下,以便更好地理解;我想将名为“Serial_Numbers”的数组中的所有值添加到名为“Serial_Numbers”的列中的数据库中,并将名为“Costs”的数组中的所有值添加到我的数据库中名为“Costs”的列中。我想使用foreach循环来实现这一点的原因是,我希望它同时通过这两个数组时间,直到它用完为止,这样,我可以根据正确的序列号和成本在数据库中更新信息
希望它现在有意义,请让我知道您是否希望我添加任何其他内容。您需要并行地在两个子数组上循环,而不是使用嵌套循环,因此您可以将所有对应的元素作为对,而不是叉积
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));
这似乎是您在循环中所期望的。您需要并行地在两个子数组上循环,而不是使用嵌套循环,因此您可以将所有对应的元素作为成对元素,而不是叉积
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));
这似乎是您在循环中所期望的。尝试以下方法:
for ( $i = 0; $i <= count($new_info['Serial_Numbers']); $i++ )
{
echo $new_info['Serial_Numbers'][$i].'<br />';
echo $new_info['Costs'][$i];
}
对于($i=0;$i请尝试以下操作:
for ( $i = 0; $i <= count($new_info['Serial_Numbers']); $i++ )
{
echo $new_info['Serial_Numbers'][$i].'<br />';
echo $new_info['Costs'][$i];
}
for($i=0;$i如果序列号是唯一的,那么可以像这样使用普通数组
$new_info = array(101=>10,102=>9,103=>8,104=>9);
foreach($new_info as $serial_number => $cost) {
}
如果序列号不是唯一的,则使用Barmar建议的方法。如果序列号是唯一的,则可以像这样使用普通数组
$new_info = array(101=>10,102=>9,103=>8,104=>9);
foreach($new_info as $serial_number => $cost) {
}
如果序列号不是唯一的,那么使用Barmar建议的方法。我不理解您对当前foreach循环的解释。您在那里只有一个foreach
循环。@putvande删除了它,因为它与此无关,希望现在它更有意义。谢谢!您想添加逗号分隔的数组“序列号”在数据库中,或者您想对其执行什么操作?您现在使用它的方式必须给出一个错误。$serialToCosts=array\u combine($new\u info['Serial\u number'],$new\u info['Costs']);foreach($serialToCosts as$cSerialNumber=>$cCost){……}
我假设数据库中的行应该看起来像序列号、成本
例如101、10
。我还想指出,除非您在插入前检查值是否为整数,否则您的代码是可注入的。我不理解您对当前价格的解释ch循环。您只有一个foreach
循环。@putvande删除了它,因为它与此无关,希望它现在更有意义。谢谢!您想在数据库中添加以逗号分隔的数组“序列号”,还是想用它做什么?您现在使用它的方式必须给出一个错误。$serialToCosts=array\u combine($new\u info['Serial_number'],$new_info['Costs'];foreach($cSerialNumber=>$cCost){……}
我假设数据库中的行应该看起来像序列号、成本
例如101、10
。我还想指出,除非您在插入它们之前检查值是否为整数,否则您的代码是可注入的。如果您不介意,我想尝试理解您的代码,以便知道它是如何工作的。你介意解释一下$new_info['Costs'][$i]是如何与它旁边的[$i]一起工作的,而不是没有它吗?$new_info['Costs']
是一个数组。如果你想访问其中的一个元素,你需要提供一个索引。如果你不介意的话,我想试着理解你的代码,这样我就知道它是如何工作的。你介意解释一下$new\u info['Costs'][$I]是如何使用它旁边的[$I]而不是没有它的吗?$new\u info['Costs']
是一个数组。如果要访问其中的元素,需要提供索引。