循环时每3次迭代后增加一年



我有一个包含n的数组,元素的数量可以是6或8,就像这样:

$langs = ["PHP", "JAVA", "Ruby", "C", "C++", "Perl"];

我想在的元素旁边平均添加一年

6个元素情况下的期望输出:

  • PHP-2022
  • JAVA-2022
  • Ruby-2022
  • C-2023
  • C++-2023
  • Perl-2023

9个元素情况下的期望输出:

  • PHP-2022
  • JAVA-2022
  • Ruby-2022
  • C-2023
  • C++-2023
  • Perl-2023
  • Python-2024
  • Javascript-2024
  • Mysql-2024

我的尝试:

$date = Carbon::now();
foreach($langs as $key => $lang){
if(count($langs) % $key == 0){
echo $lang .' - '. $date->addYear(); 
}
}

每当$key不为零且$key / 3没有余数时,都会对年份进行凹凸处理。

代码:(演示(

$langs = ["PHP", "JAVA", "Ruby", "C", "C++", "Perl", "Perl", "Python", "Javascript", "Mysql"];
$date = Carbon::now();
foreach ($langs as $key => $lang){
if ($key && $key % 3 === 0) {
$date->addYear();
}
echo $lang .' - '. $date->year . PHP_EOL; 
}

老实说,我认为为这个非常基本的任务调用日期时间包装器没有任何好处。您可以使用PHP的原生date()函数轻松地替换Carbon的所有用法。(演示(

$langs = ["PHP", "JAVA", "Ruby", "C", "C++", "Perl", "Perl", "Python", "Javascript", "Mysql"];
$year = date('Y');
foreach ($langs as $key => $lang){
if ($key && $key % 3 === 0) {
++$year;
}
echo $lang .' - '. $year . PHP_EOL; 
}

我会按照@mickmackusa的建议使用%3,但我会避免增加日期对象的年份,因为在这里你只需要获得年份号并增加它(月/日/小时等不是你需要保留的信息(:

$langs = ["PHP", "JAVA", "Ruby", "C", "C++", "Perl", 'foo', 'bar', 'bam'];
$year = Carbon::now()->year;
foreach ($langs as $key => $lang){
if ($key && $key % 3 === 0) {
$year++;
}
echo $lang .' - '. $year . PHP_EOL; 
}

最新更新