2016-04-14 16 views
0

イム・フィルタリング・祝日の配列から当日の名前を取得:このような日付の指定された配列のうち、日付

date_default_timezone_set('Europe/Berlin'); 

$timestamp = strtotime('monday this week'); 
$holidays = array('Sonntag 17.04.','Dienstag 19.04.','Mittwoch 20.04.'); 

$days = array(); 
for ($i = 0; $i < 14; $i++) : 
$days[] = strftime('%A %d.%m.', $timestamp); 
$timestamp = strtotime('+1 day', $timestamp); 
endfor; 

foreach($days AS $day) : 
if (in_array($day, $holidays)) : 
echo $day . ' is a holiday and ' . (strftime('%A', strtotime($day))) . '<br />'; 
else : 
echo $day . '<br />'; 
endif; 
endforeach; 

今、私はまた、このような日の名前を取得したいと思います:

「火曜日19.04は休日と火曜日です」

どうすればいいですか?

+0

最後の**火曜日**は、 'day'変数から最初の単語を取得するだけで達成できますか?もしそうなら、それはちょうど 'substr($ day、strpos($ day、 '')-1);' – Edu

答えて

0
<?php 
date_default_timezone_set('Europe/Berlin'); 
setlocale(LC_TIME, 'de_DE'); 
$timestamp = strtotime('monday this week'); 
$holidays = array('Sonntag 17.04.','Dienstag 19.04.','Mittwoch 20.04.'); 
$enHolidays = array_map('daysToEn',$holidays); 

$days = array(); 
for ($i = 0; $i < 14; $i++) : 
$days[] = strftime('%A %d.%m.', $timestamp); 
$timestamp = strtotime('+1 day', $timestamp); 
endfor; 

foreach($days AS $day) : 
if (in_array($day, $enHolidays)) : 
echo daysToDe($day) . ' is a holiday and ' . daysToDe(strftime('%A', strtotime($day))) . '<br />'; 
else : 
echo $day . '<br />'; 
endif; 
endforeach; 


function daysToEn($dayName) { 
    $engDays = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'); 
    $duDays = array('Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'); 
    return str_replace($duDays,$engDays,$dayName); 
} 

function daysToDe($dayName) { 
    $engDays = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'); 
    $duDays = array('Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'); 
    return str_replace($engDays,$duDays,$dayName); 
} 
+0

ありがとうございます。私はいつも同じ値(木曜日)を毎日得る。 – hes

+0

@hes これはうまくいきます。 http://sandbox.onlinephpfunctions.com/code/5757a0558251b0f831d81978337dfe9990a1e909 – Mojtaba

+0

ええ、あなたは正しいです。 Imはsetlocale(LC_ALL、 'de_DE.UTF8'、 'de_DE')を使用しているため、私の場合ではないでしょうか? – hes

関連する問題