Foros del Web » Programando para Internet » PHP »

Lista de años en array

Estas en el tema de Lista de años en array en el foro de PHP en Foros del Web. Hola, necesito obtener la lista de años entre el año actual + $adelanta y 100 años atrás. En forma creciente o decreciente. He probado varios ...
  #1 (permalink)  
Antiguo 10/12/2009, 00:27
 
Fecha de Ingreso: diciembre-2009
Mensajes: 5
Antigüedad: 14 años, 4 meses
Puntos: 0
Lista de años en array

Hola, necesito obtener la lista de años entre el año actual + $adelanta y 100 años atrás. En forma creciente o decreciente.
He probado varios acercamientos, y por alguna razón fallan.
El resultado de la función tendría que se un array que contenga arrays de 2 items, ambos conteniendo el valor de un año. Por ejemplo:
[0] = (2009,2009)
[1] = (2008,2008)
..
[100] = (1909,1909)

Probé con lo siguiente, pero por algo no funciona. Debo aclarar que soy muy nuevo en PHP por lo que si hay errores MUY triviales, sepan comprenderme.
Código:
        static function obtener_lista_anios($adelanta=0)
	{
        $anios = array();
        $j     = 0;
        for ($i = $anio2=date("Y")+$adelanta; $i > $anio1=date("Y")-100; $i+= -1, $j++) { 
            $anios[$j] = array($i,$i);
        }
        return $anios;
	}
Mil gracias!!
  #2 (permalink)  
Antiguo 10/12/2009, 00:43
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Lista de años en array

asu mare amigo.......... que instituto, universidad, colegio, profesor o que pagina de internet te ha enseñado a crear los for de esa manera ?????????????????
for ($i = $anio2=date("Y")+$adelanta; $i > $anio1=date("Y")-100; $i+= -1, $j++) {.

y esto para que ???????
$anios[$j] = array($i,$i);

osea, yo entiendo que dices que no tienes conocimientos en php, pero la sintaxis de los for o array de esa forma no la he visto en ningun lenguaje de programacion....................

en fin............ aca te va el codigo correcto.

Código php:
Ver original
  1. function obtener_lista_anios($adelanta=0){
  2.     $anios = array();
  3.     for($i = date("Y"); $i >= date("Y") - 100; $i--){
  4.         $anios[] = array($i, $i + $adelanta);
  5.     }
  6.     return $anios;
  7. }

Gracias por el karma :P

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog

Última edición por masterojitos; 10/12/2009 a las 00:48
  #3 (permalink)  
Antiguo 10/12/2009, 00:53
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Lista de años en array

y si deseas testearlo podrias agregarle esto........

Código php:
Ver original
  1. function obtener_lista_anios($adelanta=0){
  2.     $anios = array();
  3.     for($i = date("Y"); $i >= date("Y") - 100; $i--){
  4.         $anios[] = array($i, $i + $adelanta);
  5.     }
  6.     return $anios;
  7. }
  8. $test = obtener_lista_anios(2); //los años a adelantar lo cambias logicamente.
  9. foreach($test as $k => $v){
  10.     echo "[$k] = ($v[0], $v[1])<br />";
  11. }

Cuando gustes.

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #4 (permalink)  
Antiguo 10/12/2009, 10:13
 
Fecha de Ingreso: diciembre-2009
Mensajes: 5
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Lista de años en array

Cita:
Iniciado por masterojitos Ver Mensaje
Código php:
Ver original
  1. function obtener_lista_anios($adelanta=0){
  2.     $anios = array();
  3.     for($i = date("Y"); $i >= date("Y") - 100; $i--){
  4.         $anios[] = array($i, $i + $adelanta);
  5.     }
  6.     return $anios;
  7. }
Impecable... gracias!!!
En realidad $adelanta afecta al valor inicial del for, por eso debe incluirse ahi.
Entiendo que sobra la asignación, y que no hace falta el $j para iterar sobre el array. Por defecto se agregan solos!
El array debe contener en ambos items el mismo valor, por lo que supongo será válido modificarlo por algo así:
Código:
function obtener_lista_anios($adelanta=0){
    $anios = array();
    for($i = date("Y")+$adelanta; i >= date("Y") - 100; $i--){
        $anios[] = array($i, $i);
    }
    return $anios;
}
y en el caso de querer hacerlo ascendente, sería así?
Código:
function obtener_lista_anios($adelanta=0){
    $anios = array();
    for($i = date("Y")-100; i  <= date("Y") +$adelanta; $i++){
        $anios[] = array($i, $i);
    }
    return $anios;
}
Mil gracias!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:52.