否则,如月份的数字版本的月份文本版本的声明

时间:2014-10-26 18:55:53

标签: php if-statement

我正在尝试从& _POST [“finalmonth”]获取一个月的数字版本并将其转换为月份的文本版本。例如:01 = 1月。

当我使用if语句时:

 if ($_POST["finalmonth"]=01){
    $textmonth="January";
    }
 echo $textmonth;

它运作得很好。但是,我需要这个工作几个月所以我试过,如果elseif声明无济于事:

    if ($_POST["finalmonth"]=01){
    $textmonth="January";
    } elseif ($_POST["finalmonth"]=02){
    $textmonth="February";
    } elseif ($_POST["finalmonth"]=03){
    $textmonth="March";
    } elseif ($_POST["finalmonth"]=04){
    $textmonth="April";
    } elseif ($_POST["finalmonth"]=05){
    $textmonth="May";
    } elseif ($_POST["finalmonth"]=06){
    $textmonth="June";
    } elseif ($_POST["finalmonth"]=07){
    $textmonth="July";
    } elseif ($_POST["finalmonth"]=08){
    $textmonth="August";
    } elseif ($_POST["finalmonth"]=09){
    $textmonth="September";
    } elseif ($_POST["finalmonth"]=10){
    $textmonth="October";
    } elseif ($_POST["finalmonth"]=11){
    $textmonth="November";
    } elseif ($_POST["finalmonth"]=12){
    $textmonth="December";
    }

echo $ textmonth;只返回值1,没有别的。

不确定我做错了什么。

更新:感谢所有帮助过的人。我已经尝试了geoandri的切换方法,它工作正常,我可能会使用一个数组,如Cheery所说。再次感谢。

6 个答案:

答案 0 :(得分:3)

创建一个包含所有月份名称的数组,并使用月份ID作为要引用的数组中的索引。此外,您使用了错误的比较运算符。你想使用==

答案 1 :(得分:3)

$names = array(
 '01' => 'January',
 '02' => 'February',
 '03' => 'March',
 '04' => 'April',
 '05' => 'May',
 '06' => 'June',
 '07' => 'July',
 '08' => 'August',
 '09' => 'September',
 '10' => 'October',
 '11' => 'November',
 '12' => 'December'
);

if (!isset($names[$_POST["finalmonth"]]))
  echo 'Unknown month';
else
  echo $names[$_POST["finalmonth"]];

正如我在评论中写的那样,=是一项任务,逻辑比较是==。你也从表单中获取字符串,而不是整数。数组只是为了表明这个想法,它可以用于许多其他目的。

ps:如上例所示,上面的代码假定您实际上是从表单0102等发送的。如果你提交12密钥应相应修改或删除,因为数字数组从0到11开始,你可以从表单中发送相应的索引。

答案 2 :(得分:1)

我建议使用DateTime来解决这些问题,它只是简单地使用

$month = 3;
$dt = DateTime::createFromFormat('!m', $month);
echo $dt->format('F'); // March

DEMO

答案 3 :(得分:1)

您所做的是将值分配给变量而不是检查。

您需要使用==或===来执行验证操作 - 或者您需要使用switch - case。另一种方法是变量。

示例==:

if ($_POST["finalmonth"]==01){
$textmonth="January";
} elseif ($_POST["finalmonth"]==02){
$textmonth="February";
} elseif ($_POST["finalmonth"]==03){
$textmonth="March";
} elseif ($_POST["finalmonth"]==04){
$textmonth="April";
} elseif ($_POST["finalmonth"]==05){
$textmonth="May";
} elseif ($_POST["finalmonth"]==06){
$textmonth="June";
} elseif ($_POST["finalmonth"]==07){
$textmonth="July";
} elseif ($_POST["finalmonth"]==08){
$textmonth="August";
} elseif ($_POST["finalmonth"]==09){
$textmonth="September";
} elseif ($_POST["finalmonth"]==10){
$textmonth="October";
} elseif ($_POST["finalmonth"]==11){
$textmonth="November";
} elseif ($_POST["finalmonth"]==12){
$textmonth="December";
}

我只是想知道你为什么不在这里混合使用mktime和日期函数。

答案 4 :(得分:0)

这有点难看但是    echo date('F',strotime("2014-$_POST[finalmonth]-01"))

日期函数返回完整的月份名称(通过发送' F')到我们连接的日期 正如我所说的那样,它很难看,但它有效。

答案 5 :(得分:0)

使用此代码

<?php

 if (isset($names[$_POST["finalmonth"]])){ 
 $months = array(   //create array of month
 '01' => 'January', 
'02' => 'February',
 '03' => 'March',
 '04' => 'April',
 '05' => 'May',
 '06' => 'June',
 '07' => 'July',
'08' => 'August',
 '09' => 'September',
 '10' => 'October',
 '11' => 'November',
 '12' => 'December'
); 
$numeric=$_POST["finalmonth"];

foreach($months as $key=>$month){
if($key == $numeric){
$in_numeric=$key;
$in_word=$month;
}
}
if(!empty($in_numeric) and !empty($in_word)){
print 'Month in number is '.$in_numeric; echo '<br/>';
print 'Month in Words is '.$in_word; 

} else{ print 'entered month was wrong'; }
}
?>