Ich bin ein Neuling sowohl in PHP und Codeigniter.PHP minus eine Woche Sonntag
Ich habe eine Funktion, die verwendet wird, um die x-Achse eines Diagramms der wöchentlichen Summen von Kilometern auf einem Fahrrad zu beschriften. Es funktioniert (oder soll funktionieren), indem man vom heutigen Datum entweder Null Sonntag oder 1, 2, 3 usw. zurückzählt, wie es von einem Array passiert wird.
Ich bin mit PHP Version 5.6.19, und dies ist mein Code:
Im Modell:
public function week_start($date, $counter){
$tstring = strtotime($date);
$wknumber = ($counter + 1);
$start = strtotime("-$wknumber weeks sunday", $tstring);
return array(date('M d', $start));}
Im Controller:
$datenumbers = array(0, 1, 2, 3, 4, 5, 6, 7);
$dateResult = $this->bike_model->week_start(date("Y/m/d"), $datenumber);
Nach Ansicht:
for ($i = 0; $i < 8; $i++){
echo "<text class = \"axis\" y = \"357\" x = \"";
echo 26 + ($i*70);
echo "\" dy = \".35em\">";
echo $dates_for_table[$i];}
Ich habe es aufgelegt seit ein paar Tagen und es hat Sonntag 3. Juli als erste Nummer auf meiner x-axis gezeigt, wie es sein sollte. Aber heute ist Sonntag, und ich erwarte, dass Sonntag, der 10. Juli, meine letzte Woche ist. Allerdings zeigt es sich immer noch letzten Sonntag!
Also meine Frage ist, gibt es hier einen Fehler oder bin ich Missverständnis, wie '- eine Woche Sonntag' sollte funktionieren?
Mein Ziel ist es, meine Funktion mit Null zu haben, da das Argument den letzten Wochenstart zurückgibt - entweder der aktuelle Sonntag, wenn Sonntag ist oder der vergangene Sonntag. Ich habe einen Workaround gefunden, indem ich ein if else zur Funktionsüberprüfung addiere, wenn es Sonntag ist.
if ($tstring == strtotime('this Sunday')){
$wknumber = $counter;}
else{
$wknumber = ($counter + 1);}
Allerdings fühlt sich das klobig an und ich suche einen eleganteren Weg. Ich möchte auch verstehen, was mit "- einer Woche Sonntag" schief gelaufen ist, seit ich dachte, ich hätte verstanden, wie es funktioniert.
Vielen Dank!
Ich sehe Ihren alten Code hatte '$ = Start (Datum ('w', $ TString) == 0)? $ tstring: strtotime ('letzter Sonntag', $ tstring); '. War das nicht Ihr Problem gelöst? – codisfy
Dieser Code war etwas, was ich ausprobierte, aber es endete damit, dass ich den aktuellen Sonntag über die gesamte x-Achse erhielt. Ich hatte diesen Code in Notizen in meinem Modell gelassen, um mehr über die Implementierung nachzudenken. – Cyclist
Ich habe gerade diesen alternativen Code erneut ausprobiert. Im Grunde war das Problem, dass es überprüft hat, ob es Sonntag war (ja!) Und wenn ja, das heutige Datum für jeden Wert im Array zurückgibt. Der einzige Weg, um eine Woche früher an jedem Punkt auf der Achse zu kommen, war die if/else-Anweisung am Ende der ursprünglichen Frage. Ich lasse diese Frage offen, auch wenn mein Code * jetzt scheint * zu funktionieren, weil mir immer noch nicht klar ist, was genau der "- $ i Wochen Sonntag" genau macht. Gibt es Ihnen den vorherigen Sonntag an jedem Tag außer Sonntag, in welchem Fall es Ihnen den aktuellen Sonntag gibt? – Cyclist