PHP Switch无法正确返回

时间:2016-01-05 16:44:04

标签: php html server php-5.6

对于我的网站,我制作了一个表单,其中一个表单值是他们选择的一个月。我的月份返回值为1-12,1是1月,12是12月,我正在使用下面的PHP代码来解释它。

switch ($_POST['month']) {
    case '1':
        $GLOBALS['month'] = 'Jan';
        break;
    case '2':
        $GLOBALS['month'] = 'Feb';
        break;
    case '3':
        $GLOBALS['month'] = 'March';
        break;
    case '4':
        $GLOBALS['month'] = 'April';
        break;
    case '5':
        $GLOBALS['month'] = 'May';
        break;
    case '6':
        $GLOBALS['month'] = 'June';
        break;
    case '7':
        $GLOBALS['month'] = 'July';
        break;
    case '8':
        $GLOBALS['month'] = 'Aug';
        break;
    case '9':
        $GLOBALS['month'] = 'Sept';
        break;
    case '10':
        $GLOBALS['month'] = 'Oct';
        break;
    case '11':
        $GLOBALS['month'] = 'Nov';
        break;
    case '12':
        $GLOBALS['month'] = 'Dec';
        break;
    default:
        $GLOBALS['month'] = '';
        break;
};

echo 'month '.$month; //returns "month 12"

问题是$month总是返回“12”,无论原始值是什么(它甚至不返回“Dec”,它只返回“12”)。我似乎无法弄清楚开关有什么问题。

简化表格

<form action="http://foo.com/foo-redirect/" method="POST" target="_blank">
    <select name="month" required><option value="" disabled selected>Month</option><option value="1">January</option><option value="2">February</option><option value="3">March</option><option value="4">April</option><option value="5">May</option><option value="6">June</option><option value="7">July</option><option value="8">August</option><option value="9">September</option><option value="10">October</option><option value="11">November</option><option value="12">December</option></select>
    <select name="day" required><option value="" disabled selected>Day</option><option value="12">1</option><option value="12">2</option><option value="12">3</option><option value="12">4</option><option value="12">5</option><option value="12">6</option><option value="12">7</option><option value="12">8</option><option value="12">9</option><option value="12">10</option><option value="12">11</option><option value="12">12</option><option value="12">13</option><option value="12">14</option><option value="12">15</option><option value="12">16</option><option value="12">17</option><option value="12">18</option><option value="12">19</option><option value="12">20</option><option value="12">21</option><option value="12">22</option><option value="12">23</option><option value="12">24</option><option value="12">25</option><option value="12">26</option><option value="12">27</option><option value="12">28</option><option value="12">29</option><option value="12">30</option><option value="12">31</option></select>,
    <select name="year" required><option value="" disabled selected>Year</option><option value="2016">2016</option><option value="2017">2017</option></select>
</form>

我将表单提交为

月:1(1月)

日:5

年:2016

更新

它实际上是遗漏代码中有问题的一部分,谢谢你的帮助。

我是不正确的,它实际上似乎是WordPress的问题(我使用WordPress使网站更改更容易)。虽然它说版本是PHP5.6,但它缺少PHP5的一些功能。

1 个答案:

答案 0 :(得分:1)

$GLOBALS['month'] = '';

switch ($_POST['month']) {
    case '1':
        $GLOBALS['month'] = 'Jan';
        break;
    case '2':
        $GLOBALS['month'] = 'Feb';
        break;
    case '3':
        $GLOBALS['month'] = 'March';
        break;
    case '4':
        $GLOBALS['month'] = 'April';
        break;
    case '5':
        $GLOBALS['month'] = 'May';
        break;
    case '6':
        $GLOBALS['month'] = 'June';
        break;
    case '7':
        $GLOBALS['month'] = 'July';
        break;
    case '8':
        $GLOBALS['month'] = 'Aug';
        break;
    case '9':
        $GLOBALS['month'] = 'Sept';
        break;
    case '10':
        $GLOBALS['month'] = 'Oct';
        break;
    case '11':
        $GLOBALS['month'] = 'Nov';
        break;
    case '12':
        $GLOBALS['month'] = 'Dec';
        break;
    default:
        $GLOBALS['month'] = '';
        break;
};

echo $GLOBALS['month'];

正确返回月份名称。

如果文件一开始的$ _POST ['month']的print_r返回一个值,那么你的错误必须在代码的后面。

1)检查包含$ _POST数据。

2)如果缺少$ _POST数据,请检查表格。

3)在switch语句结束后直接检查全局变量。

4)如果1和3返回数据,则您的错误位于代码的后面。

在您的问题更新后:

$month = $GLOBALS['month'];

echo $month;

如果您没有在其他地方编辑$ GLOBALS ['month']的值,那么应该有效。