Else If语句用于月份的数字版本中的月份的文本版本


Else If Statement For Text version of Month from Numerical Version of Month

我正在尝试从&amp_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:上面的代码假设,如您的示例所示,您实际上是从表单0102等发送的。如果您提交12密钥,则应该相应地修改或删除,因为数字数组从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'; }
}
?>