Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有用户输入的Switch语句_Php_Switch Statement - Fatal编程技术网

Php 带有用户输入的Switch语句

Php 带有用户输入的Switch语句,php,switch-statement,Php,Switch Statement,作为一个新手,我不擅长编码 我正在尝试做一个switch语句,它将给用户他们输入到正确罗马数字中的数字(只有1-10之间的数字) 键入1-10之间的数字。 目前,这就是我所拥有的,但我不知道如何让switch语句使用用户提供的号码。有什么帮助吗 提前感谢。您可以使用以下解决方案来解决您的问题: $input = $_POST['num']; if($input){ switch($input) { .... } } 首先你要确保你有一个 注意我正在使用$\u

作为一个新手,我不擅长编码

我正在尝试做一个switch语句,它将给用户他们输入到正确罗马数字中的数字(只有1-10之间的数字)


键入1-10之间的数字。
目前,这就是我所拥有的,但我不知道如何让switch语句使用用户提供的号码。有什么帮助吗


提前感谢。

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

$input = $_POST['num'];
if($input){
    switch($input) {
        ....
    }
}

首先你要确保你有一个 注意我正在使用$\u 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($\u POST['submit'])
返回一个布尔值,它不是
开关
语句所期望的1-10范围内的整数。您可能打算使用
$\u 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';
  }
}
数组是封装逻辑的一种更紧凑的方式,而不是一个长且可能容易出错的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";
}

?>

键入1-10之间的数字。

用户将在其中输入数字的
输入具有
名称
属性
'num'
,因此要获取用户输入的内容,您将使用
$\u 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';
  }
}

isset($\u POST['submit'])
。你想在你的
开关之前测试它(虽然测试
$\u POST['num']
会更有意义),然后使用
开关($\u POST['num'])
$\u POST['num']
应该包含数字而不是
$\u POST['submit']
,但是如果OP正在运行
PHP
<7怎么办?
空合并运算符
将无法识别,因为
不是有效的语法。@这确实很遗憾,-非常感谢。这起了作用。我不知道伊塞特必须在转换之前。@CholoBoy很高兴我能帮助你。
isset
功能主要用于检查表单提交情况。