J'ai une série de mois. Je veux parcourir chaque mois comme clé pour obtenir les valeurs de chacun, mais ...
Je veux commencer au mois en cours, lancer foreach et revenir à l'année suivante en m'arrêtant le 12e mois.
J'ai essayé de créer un tableau de mois distinct basé sur le mois en cours, mais cela semble un peu bizarre.
3 Réponses :
Vous pouvez essayer avec l'instruction continue !
$current_month = 6; # just assuming, you can change as per your requirement.
foreach ($month_array as $k => $v) {
if ($k < 5) continue;
// your code here to go after your current month to end of the year's month
}
Je pense que Dave S souhaite que le tableau revienne aux premiers mois (mais pour l'année suivante). Exemple: commence le 18 octobre, 18 novembre, 18 décembre, 19 janvier, 19 février, etc. Cela s'arrêterait à la fin de l'année (18 décembre).
@Jonathan Désolé mon mal !! Ensuite, j'ai juste mal lu cela - je veux commencer au mois en cours, exécuter le foreach et revenir à l'année suivante en m'arrêtant le 12e mois .
Vous pouvez utiliser une boucle do / while avec un compteur modulo, par exemple
Jun 2018 ... Dec 2018 Jan 2019 ... May 2019
Sortie:
$year = 2018;
$i = $current_month = 5;
do {
echo $months[$i] . " $year\n";
$i = ($i + 1) % 12;
if ($i == 0) $year++;
} while ($i != $current_month);
Si vous avez également besoin de maintenir un compteur d'année, vous pouvez utilisez ce code, qui incrémente l'année à la fin du mois:
Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May
Résultat:
$months = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
$i = $current_month = 5;
do {
echo $months[$i] . "\n";
$i = ($i + 1) % 12;
} while ($i != $current_month);
La deuxième année entière doit être bouclée. par exemple. Juin-décembre 2019 ET janvier-décembre 2020.
@Jonathan Je ne pense pas, je pense que le 12ème mois est 11 mois après le premier mois, pas décembre de l'année suivante. Si OP avait voulu que ce soit décembre, il aurait pu le dire.
Impressionnant. Mon mal si c'est le cas, vous avez quand même mon vote! :)
@Jonathan Je suppose que nous découvrirons ce que signifie vraiment OP quand ils acceptent une réponse ... :-)
@Nick Spot sur. Je devais juste obtenir le mois en cours -1 et cela a très bien fonctionné!
Pourquoi ne pas utiliser à la place l'instruction pour ?
June July August September ...
Imprimera
$months = [
'January',
'February',
'...',
];
$currentMonth = 5; // 0 for January, 11 for December
for($i = 0; $i < 12; $i++) {
$index = ($currentMonth + $i) % 12;
echo $months[$index] . PHP_EOL;
}