我有一个包含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;
}