我正在尝试从&_POST["finalmonth"]并将其转换为月份的文本版本。例如:01=一月。
当我使用if语句时:
if ($_POST["finalmonth"]=01){
$textmonth="January";
}
echo $textmonth;
它工作得很好。然而,我需要这个工作所有的月,所以我尝试了,如果其他声明无效:
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所说的那样使用数组。再次感谢。
$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开始,并且您可以从表单发送相应的索引。
创建一个包含所有月份名称的数组,并使用月份ID作为数组中要引用的索引。此外,您使用了错误的比较运算符。您想要使用==
我建议使用DateTime来解决这些问题,它实际上只是使用
$month = 3;
$dt = DateTime::createFromFormat('!m', $month);
echo $dt->format('F'); // March
DEMO
您所做的是将值分配给变量,而不是检查。
您需要使用==或===来执行验证操作,否则您将进入切换情况。另一种方法是变量。
==示例:
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和date函数。
这有点难看,但echo date('F',strotime("2014-$_POST[finalmonth]-01"))
date函数将完整的月份名称(通过发送"F")返回到我们连接的日期正如我所说的,它很难看,但它可以
使用此代码
<?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'; }
}
?>