作为一个抬头我是编码的新手。
我正在尝试制作一个switch语句,它将为用户提供他们输入的正确罗马数字的编号(仅1-10的数字)。
<form action="#" method="post">
Type a number from 1-10. <input type="text" name="num"/>
<input type="submit" name="submit">
</form>
<?php
switch (isset($_POST['submit'])) {
//$num = (int)$_POST["num"];
case 1:
echo "I";
break;
case 2:
echo "II";
break;
case 3:
echo "III";
break;
case 4:
echo "IV";
break;
case 5:
echo "V";
break;
case 6:
echo "VI";
break;
case 7:
echo "VII";
break;
case 8:
echo "VIII";
break;
case 9:
echo "IX";
break;
case 10:
echo "X";
break;
}
?>
目前,这是我所拥有的,但我不知道如何让switch语句使用用户提供的数字。有帮助吗?
提前致谢。
用户将在其中输入数字的input
具有name
的'num'
属性,因此要获得用户输入的内容,您将使用$_POST['num']
。
// if the form has been submitted
if(isset($_POST['submit'])) {
$num = (int) $_POST['num'];
switch($num) {
case 1:
echo "I";
break;
case 2:
echo "II";
break;
case 3:
echo "III";
break;
case 4:
echo "IV";
break;
case 5:
echo "V";
break;
case 6:
echo "VI";
break;
case 7:
echo "VII";
break;
case 8:
echo "VIII";
break;
case 9:
echo "IX";
break;
case 10:
echo "X";
break;
default:
echo 'wrong number or you probably entered a number less than 1 or higher than 10';
}
}
首先你要确保你有一些东西注意我正在使用$ _POST ['num']
$num = $_POST['num'] ?? 0;
现在你检查一下
switch($num){
case 1:
echo 'I';
break;
case 2:
echo 'II';
break;
...
...
我会做的有点不同,即使这不是最有效的转换。
echo (([1=>'I', 2=>'II',3=>'III',....,9=>'IX'])[$_POST['num']]) ?? '';
isset($_POST['submit'])
返回一个布尔值,它不是switch
语句所期望的1-10范围内的整数。你可能打算使用$_POST['num']
。
数组是一种更紧凑的方式来封装您的逻辑,而不是一个长且可能容易出错的switch语句。每个数组索引映射到数字如下:
<form action="#" method="post">
Type a number from 1-10. <input type="text" name="num">
<input type="submit" name="submit">
</form>
<?php
$numerals = ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X'];
if (isset($_POST['num'])) {
echo isset($numerals[$_POST['num']]) ? $numerals[$_POST['num']] : "error";
}
?>
您可以使用以下解决方案来解决您的问题:
$input = $_POST['num'];
if($input){
switch($input) {
....
}
}