通过循环写一个数组

时间:2012-01-05 01:40:25

标签: php

我需要编写一个如下所示的数组:

$years = array('12', '11', '10', '09', '08');

我想有一个脚本来创建这个数组,所以我不必每年更新它。

试过这个:

for ($i = date("y"); $i >= 08; $i++) {
    $yrs .= '"'.$i.'", ';
}

$years = array($yrs);

3 个答案:

答案 0 :(得分:1)

你想要在你的循环中递减而不是递增,因为你试图从12降到8.所以将你的++改为 - 。您还可以使用$years[] = ...表示法附加到数组,并使用$years = array()创建数组:

$years = array();
for ($i = date("y"); $i >= 8; $i--)
    $years[] = str_pad($i, 2, "0", STR_PAD_LEFT);

print_r($years)给出:

Array
(
    [0] => 12
    [1] => 11
    [2] => 10
    [3] => 09
    [4] => 08
)

示例:http://codepad.viper-7.com/VDQNj2

答案 1 :(得分:0)

$years = array();

for ($i = date("y"); $i >= 8; $i--) {
    $years[] = substr("00".$i,-2);
}

答案 2 :(得分:0)

PHP的range函数在这里有很多帮助:

4位数年

$thisYear = date('Y'); // "2012"
$years = range($thisYear, $thisYear-4);

// array(2012,2011,2010,2009,2008)

2位数年

$thisYear = date('y'); // "2012"
$years = range($thisYear, $thisYear-4);

// array(12,11,10,9,8)

+将零填充添加到2位数年

$years = array_map(function($year) {
    return sprintf('%02u', $year);
}, $years);

// array("12","11","10","09","08")

注意:对array_map使用内联函数(闭包)需要PHP 5.3 +

相关问题