Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/06/2013, 17:35
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Insertar dias en un Arreglo!

Podria empezar asi

Código PHP:
<?php

date_default_timezone_set
('America/Bogota');

// Cuantos dias tiene... Febrero ?
function dias_mes($month$year) {
   return 
date("d",mktime(0,0,0,$month+1,0,$year));
}

// fecha en formato "dd-mm-aaaa"
$hoy date('d-m-Y');
$en_28 date('d-m-Y'strtotime($hoy' + 28 days'));

echo 
$en_28;
// Rellenar hasta ese dia 

$dia_actual date('d');
$ano_actual date('Y');
$mes_actual date('m');

list (
$dia_en_28,$mes_en_28,$ano_en_28) = explode('-',$en_28);

if (
$mes_actual==$mes_en_28)
{
   
// mismo mes
   
for ($d=$dia_actual;$d<=$dia_en_28;$d++){
       
$dias[] = (int) $d;
   }
}else{
   
// mes siguiente
   
$ultimo_dia_mes dias_mes($mes_actual,$ano_actual);
   for (
$d=$dia_actual;$d<=$ultimo_dia_mes;$d++){
       
$dias[] = (int) $d;
   }
   for (
$d=1;$d<=$dia_en_28;$d++){
       
$dias[] = (int) $d;
   }
}

var_dump($dias);
Salida:

Cita:
26-07-2013
array (size=29)
0 => int 28
1 => int 29
2 => int 30
3 => int 1
4 => int 2
5 => int 3
6 => int 4
7 => int 5
8 => int 6
9 => int 7
10 => int 8
11 => int 9
12 => int 10
13 => int 11
14 => int 12
15 => int 13
16 => int 14
17 => int 15
18 => int 16
19 => int 17
20 => int 18
21 => int 19
22 => int 20
23 => int 21
24 => int 22
25 => int 23
26 => int 24
27 => int 25
28 => int 26

Obviamente esta muy chancho asi... toca encapsular eso en una clase o funcion al menos...... no use nada exclusivo de PHP 5.3 por compatiblidad

Version encapsulada:

Código PHP:
<?php

date_default_timezone_set
('America/Bogota');

var_dump(dias_plus28(4,10,2013));

/**
 * @param int  dia 
 * @param int  mes 
 * @param int  ano
 * @return array
 */
function dias_plus28($dia_inicio=null,$mes_inicio=null,$ano_inicio=null){

if (
$dia_inicio==null and $mes_inicio==null and $ano_inicio==null){    
    
$dia_inicio date('d');
    
$mes_inicio date('m');
    
$ano_inicio date('Y');
    
$inicio"$dia_inicio-mes_inicio-ano_inicio";

}else   
    
$inicio =  date('d-m-Y',mktime(0,0,0,$mes_inicio,$dia_inicio,$ano_inicio)); // hoy


$en_28 date('d-m-Y'strtotime($inicio' + 28 days'));


list (
$dia_en_28,$mes_en_28,$ano_en_28) = explode('-',$en_28);

if (
$mes_inicio==$mes_en_28)
{
   
// mismo mes
   
for ($d=$dia_inicio;$d<=$dia_en_28;$d++){
       
$dias[] = (int) $d;
   }
   
}else{
   
// mes siguiente
   
$ultimo_dia_mes dias_mes($mes_inicio,$ano_inicio);
   
   for (
$d=$dia_inicio;$d<=$ultimo_dia_mes;$d++){ 
       
$dias[] = (int) $d;
   }
   for (
$d=1;$d<=$dia_en_28;$d++){
       
$dias[] = (int) $d;
   }
}

return 
$dias;
}

// Cuantos dias tiene... Febrero ? (anonima)
function dias_mes($month$year
{
   return 
date("d",mktime(0,0,0,$month+1,0,$year));
}
__________________
Salu2!

Última edición por Italico76; 29/06/2013 a las 09:15