我有一個小程序我正在嘗試爲需要我接受用戶輸入的類完成,在數組中找到匹配項,然後在值關鍵字匹配時打印值用戶輸入。使用關聯數組打印數值匹配用戶輸入
我是相當新的PHP,所以裸跟我說:
我已經嘗試了一些不同的東西,但我得到的輸入鍵中的一個最常見的邏輯錯誤返回「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>
我猜這個任務的重點是讓我們使用foreach嗎?不是很確定,但是當班級爲演習準備代碼時,老師提到了一個問題。我感謝你的幫助,這使事情變得更加清晰。如果我想要在用戶沒有輸入匹配鍵時執行返回錯誤,我會在哪裏放置它?在foreach中添加一個else塊到嵌套的if仍然會導致「notherenothere」(迭代通過數組的長度輸出nothere)。再次感謝任何額外的迴應! –
我已更新我的回答。好的,使用foreach的原因是,如果有人輸入了一個不匹配的值。因此你必須在foreach中使用'if-else-statement'。 – Sun
對,我明白這一點。問題是使用這個特定的代碼會導致回聲說:「沒有匹配!沒有匹配!沒有匹配!沒有匹配!沒有匹配!沒有匹配!沒有匹配!」這正是我想要避免的。 –