gpt4 book ai didi

php - foreach() 跳过数组中的第一个元素

转载 作者:可可西里 更新时间:2023-10-31 22:56:26 25 4
gpt4 key购买 nike

尝试创建 GPA 计算器。我有一个提交到 php 文件的表单,然后将表单中的所有数据存储在 php array() 中。在我输入相同的值之前,计算器工作得很好。在我展示一些图片之前,我认为这没有意义:

这是图像中的问题:

Error Scenario

Correct Scenario

所以在第一张图片中,我输入一个 A,然后输入另一个 A,当使用 var_dump() 时输出 array(1) { [0]=> float(4.5) }

在第二张图片中,var_dump() 是 array(2) { [0]=> float(4) 1 => float (3.5)

它会跳过第一张图片的第一行……以防万一 A 在 REG 中应该等于 4.0,在 HONORS 中应该等于 4.5。它可能是 array_combine()

这是我的 PHP 代码:

//$_POST['grades'] for the grades <option> and $_POST['types'] for the type (REG, HONORS)
foreach(array_combine($_POST['grades'], $_POST['types']) as $code => $count)
{

if ($code == "A")
{
if ($count == "REGULAR")
{
$GradeArray[] = 4.0;
}
else if ($count == "HONORS")
{
$GradeArray[] = 4.5;
}
else if ($count == "COLLEGE")
{
$GradeArray[] = 5.0;
}
}
else if ($code == "B")
{
if ($count == "REGULAR")
{
$GradeArray[] = 3.0;
}
else if ($count == "HONORS")
{
$GradeArray[] = 3.5;
}
else if ($count == "COLLEGE")
{
$GradeArray[] = 4.0;
}
}
else if ($code == "C")
{
if ($count == "REGULAR")
{
$GradeArray[] = 2.0;
}
else if ($count == "HONORS")
{
$GradeArray[] = 2.5;
}
else if ($count == "COLLEGE")
{
$GradeArray[] = 3.0;
}
}
else if ($code == "D")
{
if ($count == "REGULAR")
{
$GradeArray[] = 1.0;
}
else if ($count == "HONORS")
{
$GradeArray[] = 1.5;
}
else if ($count == "COLLEGE")
{
$GradeArray[] = 2.0;
}
}
else if ($code == "F")
{
if ($count == "REGULAR")
{
$GradeArray[] = 0.0;
}
else if ($count == "HONORS")
{
$GradeArray[] = .5;
}
else if ($count == "COLLEGE")
{
$GradeArray[] = 1.0;
}
}


}

可能是整个 foreach() 语句需要修改...如果有人这么说,我准备重新编写逻辑...

我不想用代码堵塞问题,所以如果您绝对需要 html,请询问,我会添加编辑。

编辑:我也在想我需要重写逻辑...我以前从未使用过 array_combine()...我只需要确保与相关的

感谢您的帮助!

最佳答案

如果您想迭代两个数组(或更多),您可以考虑使用 MultipleIterator ;它不会像 array_combine() 那样破坏数组键。

您还可以通过使用数组来定义每个年级/类型组合的分数来简化您的逻辑:

$gradesToScores = array(
'REGULAR' => array(
'A' => 4.0, 'B' => 3.0, 'C' => 2.0, 'D' => 1.0, 'F' => 0.0,
),
'HONORS' => array(
'A' => 4.5, 'B' => 3.5, 'C' => 2.5, 'D' => 1.5, 'F' => 0.5,
),
'COLLEGE' => array(
'A' => 5.0, 'B' => 4.0, 'C' => 3.0, 'D' => 2.0, 'F' => 1.0,
),
);

$gradeItemIterator = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);
$gradeItemIterator->attachIterator(new ArrayIterator($_POST['grades']), 'grade');
$gradeItemIterator->attachIterator(new ArrayIterator($_POST['types']), 'type');

$gradeScores = array();

foreach ($gradeItemIterator as $gradeItem) {
$gradeScores[] = $gradesToScores[$gradeItem['type']][$gradeItem['grade']];
}

关于php - foreach() 跳过数组中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14371914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com