我正在尝试从& _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所说。再次感谢。
答案 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:如上例所示,上面的代码假定您实际上是从表单01
,02
等发送的。如果你提交1
,2
密钥应相应修改或删除,因为数字数组从0到11开始,你可以从表单中发送相应的索引。
答案 2 :(得分:1)
我建议使用DateTime来解决这些问题,它只是简单地使用
$month = 3;
$dt = DateTime::createFromFormat('!m', $month);
echo $dt->format('F'); // March
答案 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'; }
}
?>