Kan iemand mij helpen een forloop te schrijven die van 1 t/m 52 telt, maar dan begint met de huidige weeknummer boven aan?

ik heb nu dit:

<?php
for ($week = 1; $week <= 52; $week++) {
    if ($week == date('W')){
        echo ">>>";
    }
    echo "<button id='toggle$week' value='$week' type='button' class='btn btn-link'><h4>Week $week</h4></button>";
    echo "<div id='content$week'>";
}
?>

graag zou ik het zo willen:

(huidige week nummer is 37)
37
38
39
40
...
52

1
2
3
..
36

alvast bedankt voor alle hulp!!
Als je wilt beginnen met het huidige weeknummer, dan moet je in je for() niet met $week = 1 beginnen, maar met $week=date('W').
Ariën, bedankt voor je reactie,

Dat heb ik gedaan, dan begint hij inderdaad met de huidige weeknummer...

maar dan eindig hij bij 52, en begint hij niet meer opnieuw.

ik wil dat die na de 52 weer bij 1 begint
Tja, weeknummers blijven getallen, en getallen blijven oplopen, dus ik denk dat je dan toch echt met twee for loopjes aan de slag moet gaan.
Misschien zoiets? Zou een stuk netter kunnen uiteraard.
<?php
for ($currentWeek = date('W'), $week = $currentWeek; $week != $currentWeek - 1; $week++) {
if ($week > 52) {
$week = 1;
}
if ($week == $currentWeek){
echo ">>>";
}
echo "<button id='toggle$week' value='$week' type='button' class='btn btn-link'><h4>Week $week</h4></button>";
echo "<div id='content$week'>";
}
?>

<?php
$date = time();
for($i = 0; $i < 52; $i++){
  print(date('o\\WW',$date) . "\n");
  $date = strtotime('+1 week',$date);
}
?>


Let op: soms heeft een jaar 53 weken (2020 weer).
Geweldig!!!

Ben van Velzen, jou loop werkt, alleen week 63 wordt dan niet getoond?

Rob doemaarwat -> jou code is wat ik wil hebben

alleen hoe ga ik deze implementeren zodat die op mijn eigen code lijkt..

(ik ben nog maar een php beginner)

<?php
$date = time();
for($i = 0; $i < 52; $i++){
  $week = date('o\\WW',$date);
  if(!$i) print('>>>'); //1st week = current week
  echo "<button id='toggle$week' value='$week' type='button' class='btn btn-link'><h4>Week $week</h4></button>\n";
  echo "<div id='content$week'>\n";
  $date = strtotime('+1 week',$date);
}
?>
Misschien zou een loop als volgt ook nog werken:
<?php
for ($i = time(); $i < strtotime('+1 year'); $i = strtotime('+1 week', $i)) {
$week = date('W', $i);
if ($week == date('W')){
echo ">>>";
}
echo "<button id='toggle$week' value='$week' type='button' class='btn btn-link'><h4>Week $week</h4></button>";
echo "<div id='content$week'>";
}
?>
@Ben: sjiek :-)

Je hebt dan wel 2x een week 37 (deze week, en die van volgend jaar), en dus ook 2x een id='toggle37' (en dus een probleem). Daarom had ik het jaartal er nog even voor geplakt ('o\\WW' -> o = jaartal behorende bij het weeknr, \\W = letterlijke 'W', W = weeknummer).
De <div> wordt nergens afgesloten.

Reageren