PHP中是否有一个函数可以打印随机月份?
像 mt_rand(); 打印随机数。
如果否,有什么简单的方法可以打印随机月份?
我正在使用以下代码:
$randmo = mt_rand(1,12);
if($randmo == 1)
{
$randmonth = "Jan";
}
elseif($randmo == 2)
{
$randmonth = "Feb";
}
elseif($randmo == 3)
{
$randmonth = "Mar";
}
elseif($randmo == 4)
{
$randmonth = "Apr";
}
elseif($randmo == 5)
{
$randmonth = "May";
}
elseif($randmo == 6)
{
$randmonth = "Jun";
}
elseif($randmo == 7)
{
$randmonth = "Jul";
}
elseif($randmo == 8)
{
$randmonth = "Aug";
}
elseif($randmo == 9)
{
$randmonth = "Sep";
}
elseif($randmo == 10)
{
$randmonth = "Oct";
}
elseif($randmo == 11)
{
$randmonth = "Nov";
}
else
{
$randmonth = "Dec";
}
echo $randmonth;
Run Code Online (Sandbox Code Playgroud)
首先,我在 $randmo 变量中存储一个从 1 到 12 的兰特数。并使用 if else 打印。我正在寻找更好的脚本。
一年有12个月。
$month = mt_rand(1, 12);
Run Code Online (Sandbox Code Playgroud)
有时,有一种过度思考的倾向。您可以将其与 DateTime 类结合使用以获得您特别需要的任何内容。
好吧,让我们走极端:
function getRandomMonth($fmt = 'abbreviated') {
$formats = array(
'abbreviated' => 'M',
'numeric' => 'n',
'full' => 'F'
);
// Insure we have a valid format
$fmt = array_key_exists($fmt, $formats) ? $fmt : 'abbreviated';
$tmp = '2000-' . sprintf('%02s', mt_rand(1, 12)) . '-01';
$date = new DateTime($tmp);
return $date->format($formats[$fmt]);
}
echo getRandomMonth() . "\n";
echo getRandomMonth('numeric') . "\n";
echo getRandomMonth('full') . "\n";
Run Code Online (Sandbox Code Playgroud)
一种输出可能是:
Nov
1
October
Run Code Online (Sandbox Code Playgroud)
这当然不是比数组查找更快的代码,但它展示了这种方法如何轻松提供更大的灵活性(长名称与短名称)。更有趣的是,通过一些代码调整,您可以使用IntlDateFormatter为您提供不同语言的月份名称,从而获得本地化或国际化版本。
如果你想走那条路,你必须改变格式字符串,因为它们需要 ISO 标准字符串,但这在 php 手册中有记录。