我有一个小程序,我正在尝试为类完成,它要求我接受用户输入,在数组中找到匹配项,然后打印值(如果 values 键与用户输入匹配)。
我已经尝试了一些不同的事情,但我得到的最常见的逻辑错误是输入其中一个键返回当前迭代"DoReMiFaSoLaTi"(如下所示)。
我遇到的另一个问题是,当我将 else 块(回显"不在这里"错误)添加到嵌套在 foreach 中的 if 语句时,它会返回 DoNotHereReNotHere 等。
这是课堂作业,所以我也在课堂上尝试过常规陈述。这些没有按预期工作。
我正在用头撞墙,试图找出逻辑错误的地方,所以任何帮助都非常感谢。谢谢!
<?php
$scale = array(
"A" => "Do",
"B" => "Re",
"C" => 'Mi',
"D" => 'Fa',
"E" => 'So',
"F" => 'La',
"G" => 'Ti'
);
$query = isset($_POST['notes']);
if ($query != null)
{
foreach ($scale as $key => $sound)
{
if ($query == $key)
{
echo $sound;
}
}
}
?>
<form action="MusicalScale.php" method="post">
<label>Enter in a music note</label> <input type="text" name="notes"><br>
<input type="submit" value="Submit">
</form>
<?php
$scale = array(
"A" => "Do",
"B" => "Re",
"C" => 'Mi',
"D" => 'Fa',
"E" => 'So',
"F" => 'La',
"G" => 'Ti'
);
if (isset($_POST['notes']))
{
$query=$_POST['notes'];
foreach ($scale as $key => $sound)
{
if ($query == $key)
{
echo $sound;
}
}
}
?>
<form action="MusicalScale.php" method="post">
<label>Enter in a music note</label> <input type="text" name="notes"><br>
<input type="submit" value="Submit">
</form>
使用isset
检查变量是否已设置。它不是用来声明变量的。这样的东西会起作用:
if (isset($_POST['notes']))
{
$query = $_POST['notes'];
foreach ($scale as $key => $sound)
{
if ($query == $key)
{
echo $sound;
break;
}
else
{
echo "There is no match!";
break;
}
}
}
您也可以在没有循环的情况下这样做。
$scale = array(
"A" => "Do",
"B" => "Re",
"C" => 'Mi',
"D" => 'Fa',
"E" => 'So',
"F" => 'La',
"G" => 'Ti'
);
if(!empty($_POST['notes'])){
if(!empty($scale[$_POST['notes']])){
echo $scale[$_POST['notes']];
}else{
echo "Not here!";
}
}