2015-01-03 2 views
-3

Мне нужен массив (день, день недели и месяц) в php. Он сам содержит текущую неделю с пятницы до среды следующей недели.Неделя, начинающаяся с «Пятницы», php

Большое спасибо за вашу помощь

С помощью этого сценария я получаю массив только на текущей неделе (начиная воскресенье или понедельник) - Nuevo на испанском языке.

Не получить эту работу с двумя различными частями двух недель

HELP пожалуйста

// Name day week in Spanish 
function diaespanol($valor){ 
$valor = strtotime($valor); 
switch (date('w', $valor)){ 
case 0: $titleday ="Domingo"; break; 
case 1: $titleday ="Lunes"; break; 
case 2: $titleday ="Martes"; break; 
case 3: $titleday ="Miercoles"; break; 
case 4: $titleday ="Jueves"; break; 
case 5: $titleday ="Viernes"; break; 
case 6: $titleday ="Sabado"; break; 
} 

return $titleday ; 

} 

//name in Spanish of the month 
function mesydia($valor){ 
$mes = substr($valor,5,+2); 
$dia = substr($valor,8,+2); 
switch ($mes){ 
case '01': $titulomes ="ene"; break; 
case '02': $titulomes ="feb"; break; 
case '03': $titulomes ="mar"; break; 
case '04': $titulomes ="abr"; break; 
case '05': $titulomes ="may"; break; 
case '06': $titulomes ="jun"; break; 
case '07': $titulomes ="jul"; break; 
case '08': $titulomes ="ago"; break; 
case '09': $titulomes ="sep"; break; 
case '10': $titulomes ="oct"; break; 
case '11': $titulomes ="nov"; break; 
case '12': $titulomes ="dic"; break; 
} 
return $dia.'/'.$titulomes; 
} 

// current day 
$dia = date('Y-m-d'); 

$diarecibido = $dia; 

//Date of initial calendar day 7 days a week from Monday to Sunday 
switch (date('w', $diasemana)){ 
case 0: $titleday ="Domingo"; 
$menos=6; 
$iniciosemana = date("Y-m-d", strtotime("$diarecibido -$menos day")); 
break; 
case 1: $titleday ="Lunes"; 
$menos=1; 
$iniciosemana = $diarecibido; 
break; 
case 2: $titleday ="Martes"; 
$menos=1; 
$iniciosemana = date("Y-m-d", strtotime("$diarecibido -$menos day")); 
break; 
case 3: $titleday ="Miercoles"; 
$menos=2; 
$iniciosemana = date("Y-m-d", strtotime("$diarecibido -$menos day")); 
break; 
case 4: $titleday ="Jueves"; 
$menos=3; 
$iniciosemana = date("Y-m-d", strtotime("$diarecibido -$menos day")); 
break; 
case 5: $titleday ="Viernes"; 
$menos=4; 
$iniciosemana = date("Y-m-d", strtotime("$diarecibido -$menos day")); 
break; 
case 6: $titleday ="Sabado"; 
$menos=5; 
$iniciosemana = date("Y-m-d", strtotime("$diarecibido -$menos day")); 
break; 
} 

//day of the week 
$dia_semana = (date('w')); 


//if today is not Sunday 
if ($dia_semana != 0){ 
//muestra semana actual 
for($i=0; $i<7; $i++){  
$mostrable = date("Y-m-d", strtotime("$iniciosemana +$i day")); 
$titleday=diaespanol($mostrable); 

$array_nombres_dias[] = diaespanol($mostrable); 
$array_fechas_dias[] = mesydia($mostrable); 

} 
} 
//if today is Sunday 
else{ 
//muestra semana siguiente 
for ($i = 7; $i < 14; $i++) { 

$mostrable =date("Y-m-d", strtotime("$iniciosemana +$i day")); 
$titleday = diaespanol($mostrable); 

if($titleday =='Sabado' || $titleday=='Domingo'){ 
$findesemana='style="background:#FF0033?'; 

} 
else{ 
$findesemana= ''; 

} 

$array_nombres_dias[] = $titleday; 
$array_fechas_dias[] = mesydia($mostrable); 

} 

} 

//I walk two arrays 
$longitud = count($array_fechas_dias); 
echo $longitud; 

for($i=0; $i<$longitud; $i++) 
{ 
//sack the value of each element 
echo $array_fechas_dias[$i] . " - "; 
echo $array_nombres_dias[$i];  
echo "<br>"; 
} 
+2

«Сделай это для меня» является не совсем вопрос, который приветствуется здесь. Кроме того, это своего рода дубликат этого http://stackoverflow.com/questions/13128854/php-datetime-class-change-first-day-of-the-week-to-monday – walther

+0

Концепция - сначала найти первую пятницу , затем найдите следующую среду. затем сохраните этот цикл в массиве, а затем зациклируйте все на нужную дату. – Prashant

ответ

0
<?php 
// today 
$startDate = date('Y-m-d'); 
$endDate = '2015-01-31'; 
// check the day today and find the next day you are interested in first 
function nextDayByName($dayName="Sunday", $day='') 
{ 
    if(true===empty($day)) 
    { 
     $day = date('Y-m-d'); 
    } 
    if(date("l") !== $dayName) 
    { 
     $dayTimestamp = strtotime("next $dayName", strtotime($day)); 
    } else { 
     $dayTimestamp = strtotime($day); 
    } 
    return date('Y-m-d',$dayTimestamp); 
} 

function addDaysUntilNextCalendarDay($day, $dateTo) 
{ 
    return nextDayByName($day, $dateTo); 
} 

$allInterestedDays = array(); 

do 
{ 
    $startDate = nextDayByName("Friday", $startDate); 
    $interateDays = $startDate; 
    // echo $interateDays; 
    // exit; 
    $nextWednesday = addDaysUntilNextCalendarDay("Wednesday", $startDate); 
    do 
    { 
     $allInterestedDays[] = $interateDays; 
     $interateDays = date('Y-m-d', strtotime($interateDays) + 86400); 
    } while(strtotime($interateDays) <= strtotime($nextWednesday)); 

    //var_dump(array("Friday" => $startDate, "nextWednesday" => $nextWednesday)); 
} while($startDate <= $endDate && nextDayByName("Friday", $startDate) <= $endDate); 

var_dump($allInterestedDays); 

?> 

я работал над решением для вас. Пожалуйста, не просите других работать для вас в будущем.

Эта функция предоставит вам все дни в месяце между пятницей и средой. Надеюсь, вы сможете прийти к своему решению здесь.

Кроме того, как наконечник, его лучше применять языковые переводы в качестве замены PHP массива, так что вы можете включить языковой файл, который вы хотите использовать для замены с английского языка (базовый язык) для

Смежные вопросы