如何在PHP中打印随机月份

时间:2015-10-23 15:55:54

标签: php math

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;

首先,我在$ randmo变量中存储1到12的兰特数。并使用if else打印。 我正在寻找更好的剧本。

2 个答案:

答案 0 :(得分:4)

你可以这样做。 array_rand()函数返回数组的随机密钥。

<?php

$months=array('january','february','march','april','may','june','july','august','september','october','november','december');

$key=array_rand($months);

echo $months[$key];

答案 1 :(得分:4)

一年有12个月。

$month = mt_rand(1, 12);

有时,人们倾向于过度思考事物。您可以将它与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";

一个输出可能是:

Nov
1
October

这肯定不是比数组查找更快的代码,但它显示了这种方法如何轻松提供更多灵活性(长名称和短名称)。更有趣的是,通过一些代码调整,您可以使用IntlDateFormatter为不同语言的月份名称提供区域设置感知或可国际化版本。

如果你想要去那条路线,你必须更改格式字符串,因为它们需要ISO标准字符串,但这在php手册中有记录。