用户输入切换语句

问题描述 投票:-1回答:4

作为一个抬头我是编码的新手。

我正在尝试制作一个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语句使用用户提供的数字。有帮助吗?

提前致谢。

php switch-statement
4个回答
0
投票

用户将在其中输入数字的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';
  }
}

0
投票

首先你要确保你有一些东西注意我正在使用$ _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']]) ?? '';

0
投票

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";
}

?>

0
投票

您可以使用以下解决方案来解决您的问题:

$input = $_POST['num'];
if($input){
    switch($input) {
        ....
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.