Aqui te dejo otra forma de hacerlo, pruebala.
Código PHP:
Ver original<?php
function ultimoDia($mes,$ano){
$ultimo_dia=28;
while (checkdate($mes,$ultimo_dia + 1,$ano)){ $ultimo_dia++;
}
return $ultimo_dia;
}
/**
* @return array
*/
function lastFriday()
{
$found = false;
while(!$found){
$day--;
// Si el dia es igual a cero pasa al mes anterior
// day pasa a ser el ultimo dia del mes anterior
if($day==0){
$month--;
$day = ultimoDia($month, $year);
}
// Si el mes es igual a cero pasa al año anterior
// y el mes pasa a ser el mes 12
if($month==0){
$year--;
$month = 12;
}
$day_name = date('D', mktime(0,0,0, $month, $day, $year)); // encuentra el dia y lo devuelve
if($day_name == 'Fri'){
$found = true;
return array('day' =>$day, 'month' => $month,
'year' => $year);
}
}
}
$date = lastFriday();
echo $date['year'].'-'.$date['month'].'-'.$date['day'];
?>