Generate past years (with range) using PHP

Code:

    $cy = date('Y'); // current year
    $ld = substr($cy, 3); // last digit
    $ftd = substr($cy, 0, 3); // first three digits

    for ($i = $ld; $i > $ld - 3; $i--) {
      $j = $i;
      if ($i < 0) {
        if ($j == -1) {
          $ftd--;
        }
        $j = (9 + $i) + 1;
      }
      $years[] = $ftd . $j;
      $newld = $j;
    }

    $ld = --$newld;

    if ($ld > 0) {
      for ($i = $ld; $i > $ld - 5 || $i == 0; $i–) {
        if ($i > 0) {
          if ($i == $ld) {
            $ys = $ftd . $i;
          }

          if ($i-1 == $ld - 5) {
            if ($i == 9) {
              $ys2 = $ftd . ++$i;
            } else {
              $ys2 = $ftd . $i;
            }
            $newld = $i;
            break;
          }
        } else {
          $ys2 = $ftd . $i;
          $newld = 0;
          $ftd–;
          break;
        }
      }
      if ($ys2[3] == 1) {
        $ys2[3] = 0;
        $ftd–;
      }
      $years[] = $ys .’-’. $ys2;
    } else {
      if (!in_array($ftd . 0, $years)) {
        $years[] = $ftd . 0;
      }
      $newld = 0;
      $ftd–;
    }

    $ld = –$newld;

    if ($ld > 0) {
      for ($i = $ld; $i > 0; $i–) {
        if ($i == $ld) {
          $ys = $ftd . $ld .’-';
        }

        if ($i-1 == 0) {
          $ys .= $ftd . 0;
          $ftd–;
        }
      }
      $years[] = $ys;
    }

    $ftwod = substr($ftd, 0, 2); // first two digits
    $td = substr($ftd, 2); // third digit
    $j = 9;

    for ($i = $td; $i >= 0; $i–) {
      $fy = $ftd . $i . $j;
      $years[] = $ftwod . $i . ‘9-’. $ftwod . $i . ‘0′;
    }

Output:

  'years' =>
    array
      0 => string '2008' (length=4)
      1 => string '2007' (length=4)
      2 => string '2006' (length=4)
      3 => string '2005-2000' (length=9)
      4 => string '1999-1990' (length=9)
      5 => string '1989-1980' (length=9)
      6 => string '1979-1970' (length=9)
      7 => string '1969-1960' (length=9)
      8 => string '1959-1950' (length=9)
      9 => string '1949-1940' (length=9)
      10 => string '1939-1930' (length=9)
      11 => string '1929-1920' (length=9)
      12 => string '1919-1910' (length=9)
      13 => string '1909-1900' (length=9)

Tags: ,

Leave a Reply