afficher la variable d'une fonction a l'exterieur de celle ci
Posté : 13 mai 2016, 10:29
Bonjour j'ai glaner sur le web une fonction qui marche trés bien pour compté les jour ouvré entre deux dates.
j'aimerais récupéré dans ma page les jours fériés deja calculés par la fonction ( donc en dehors de celle ci ) est ce possible ? comment Faire ?
je voudrais afficher par exemple la variable $an.
Merci d'avance.
je vous poste le code:
j'aimerais récupéré dans ma page les jours fériés deja calculés par la fonction ( donc en dehors de celle ci ) est ce possible ? comment Faire ?
je voudrais afficher par exemple la variable $an.
Merci d'avance.
je vous poste le code:
<?php
// Fonction permettant de compter le nombre de jours ouvrés entre deux dates
function get_nb_open_days($date_start, $date_stop) {
$arr_bank_holidays = array(); // Tableau des jours feriés
// On boucle dans le cas où l'année de départ serait différente de l'année d'arrivée
$diff_year = date('Y', $date_stop) - date('Y', $date_start);
for ($i = 0; $i <= $diff_year; $i++) {
$year = (int)date('Y', $date_start) + $i;
// Liste des jours feriés
$arr_bank_holidays[] = $year.'-01-01'; // Jour de l'an
$arr_bank_holidays[] = $year.'-05-01'; // Fete du travail
$arr_bank_holidays[] = $year.'-05-08'; // Victoire 1945
$arr_bank_holidays[] = $year.'-07-14'; // Fete nationale
$arr_bank_holidays[] = $year.'-08-15'; // Assomption
$arr_bank_holidays[] = $year.'-11-01'; // Toussaint
$arr_bank_holidays[] = $year.'-11-11'; // Armistice 1918
$arr_bank_holidays[] = $year.'-12-25'; // Noel
// Récupération de paques. Permet ensuite d'obtenir le jour de l'ascension et celui de la pentecote
$easter = easter_date($year);
$arr_bank_holidays[] = date($year.'-m-d', $easter + 86400); // Paques
$arr_bank_holidays[] = date($year.'-m-d', $easter + (86400*39)); // Ascension
$arr_bank_holidays[] = date($year.'-m-d', $easter + (86400*50)); // Pentecote
$an=$arr_bank_holidays[0];
}
//
$nb_days_open = 0;
// Mettre <= si on souhaite prendre en compte le dernier jour dans le décompte
while ($date_start <= $date_stop) {
// Si le jour suivant n'est ni un dimanche (0) ou un samedi (6), ni un jour férié, on incrémente les jours ouvrés
if (!in_array(date('w', $date_start), array(0, 6))
&& !in_array(date('j_n_'.date('Y', $date_start), $date_start), $arr_bank_holidays)) {
$nb_days_open++;
}
$date_start = mktime(date('H', $date_start), date('i', $date_start), date('s', $date_start), date('m', $date_start), date('d', $date_start) + 1, date('Y', $date_start));
}
return $nb_days_open;
}
// Exemple : Du 11 au 15 juillet il n'y a qu'un jour ouvré (week-end + 1 jours férié)
$date_depart = strtotime('2016-07-11');
$date_fin = strtotime('2016-07-20');
$nb_jours_ouvres = get_nb_open_days($date_depart, $date_fin);
echo 'Il y a '.$nb_jours_ouvres.' jours ouvrés entre le '.date('d/m/Y', $date_depart).' et le '.date('d/m/Y', $date_fin);
?>