2017-04-21 1 views
1

Im Versuch, PHP-Code zu schreiben, der anfangen würde, Wochen vom spezifischen Monat zu zählen. Für mich ist es September und Februar. Das gewünschte Ergebnis für den 01.09.2017 wäre beispielsweise Semester-1, Woche-1. und für 04.09.2017 wäre Semester-1, Woche-2. Ich fand ähnliche Themen here und here. Aber das Ergebnis ist Array, sollte ich auch hier mit arreys arbeiten? Ich möchte erwähnen, dass ich fast keine Erfahrung mit PHP-Sprache habe.Beginnen Sie, Wochen von spezifischem Monat zu zählen

Dies ist, was ich mit so weit gekommen sind:

<?php 
$day = date("D"); 
$month = date("M"); 
if($month == 'Apr'||'Feb'||'Mar'||'May') { 
print "Semester-2,"; 
} 
else print ""; 
if($month == 'Sep'||'Oct'||'Nov'||'Dec') { 
print "Semester-1,"; 
} 
else print ""; 
if($month == 'Jan') { 
print "Exams"; 
} 
if($month == 'Jun') { 
print "Exams,"; 
} 
if($month == 'Jun') { 
print "Exams,"; 
} 
if($month == 'Jul'||'Aug') { 
print "Summer Break,"; 
} 
+0

'$ month == 'Sep' || 'Oct'' funktioniert nicht so wie du denkst, es muss' $ month ==' Sep '|| sein $ month == 'Oct'' usw., alternativ einfach 'if (in_array ($ month, array (" Apr "," Feb "," Mar "," May "))' – Qirel

Antwort

1

Man könnte so etwas tun:

$month = date('n'); // Month number 1-12 

if ($month >= 9 && $month <=12) { 
    $period = 'Semester-1'; 
    $startWeek = date('W', strtotime(date('Y') . '-09-01')); 
} elseif ($month >= 2 && $month <=5) { 
    $period = 'Semester-2'; 
    $startWeek = date('W', strtotime(date('Y') . '-02-01')); 
} elseif ($month == 1) { 
    $period = 'Exams'; 
    $startWeek = date('W', strtotime(date('Y') . '-01-01')); 
} elseif ($month == 6) { 
    $period = 'Exams'; 
    $startWeek = date('W', strtotime(date('Y') . '-06-01')); 
} elseif ($month == 7 || $month == 8) { 
    $period = 'Summer break'; 
    $startWeek = date('W', strtotime(date('Y') . '-07-01')); 
} 

$currentWeek = date('W') - $startWeek + 1; 

echo $period . ' ' . 'Week-' . $currentWeek; 
0

Nach @Qirel Kommentar, ich so etwas dachte, hoffen, dass diese hilft:

<?php 

error_reporting(E_ALL); ini_set('display_errors', 1); 

$month = date("M"); /* current month */ 

if (in_array($month, array("Sep", "Oct", "Nov", "Dec"))) { $myperiod = "Semester #1"; } 

if (in_array($month, array("Feb", "Mar", "Apr", "May"))) { $myperiod = "Semester #2"; } 

if($month == 'Jan') { $myperiod = "Mid-Exams #1"; } 

if($month == 'Jun') { $myperiod = "Final-Exams #2"; } 

if(($month == 'Jul') || ($month == 'Aug')) { $myperiod = "Summer break"; } 

$today = date("Y-m-d"); /* or use your date from user data */ 
$date = new DateTime($today); 
$week = $date->format("W"); /* use of PHP function 'date' to get week # */ 

$currentweek = "$week"; 

echo "[ Week # $week ]"; 

echo"You currently are in : $myperiod - $currentweek"; 

?> 
0

Dies sollte Sie geben, was Sie brauchen:

$semesters = array(
    'Sep' => 'Semester-1', 
    'Oct' => 'Semester-1', 
    'Nov' => 'Semester-1', 
    'Dec' => 'Semester-1', 
    'Jan' => 'Exams', 
    'Feb' => 'Semester-2', 
    'Mar' => 'Semester-2', 
    'Apr' => 'Semester-2', 
    'May' => 'Semester-2', 
    'Jun' => 'Exams', 
    'Jul' => 'Summer Break', 
    'Aug' => 'Summer Break', 
); 

switch ($semesters[date('M')]) { 
    case 'Semester-1': 
     $sep1st = strtotime('2017-09-01'); 
     $week1 = date('W', $sep1st); 

     $currentWeek = date('W'); 

     echo 'Semester-1, Week-', $currentWeek - $week1 + 1; // +1 because the count starts at 1. 

     break; 

    case 'Semester-2': 
     $feb1st = strtotime('2018-02-01'); 
     $week1 = date('W', $feb1st); 

     $currentWeek = date('W'); 

     echo 'Semester-2, Week-', $currentWeek - $week1 + 1; // +1 because the count starts at 1. 

     break; 

    default: 
     echo $semesters[date('M')]; 

     break; 
} 

Beachten Sie, dass dies in kleinere, semantische Teile refaktoriert werden kann.

Verwandte Themen