我试图用这种格式减去或减去1学年的学年,例如"2020-2021"
如果是2020-2021
,我想把它改成2019-2020
。有办法解决这个问题吗?
我考虑过尝试使用连字符表达式进行减法,但是我被卡住了。
echo "2020-2021"-"1-1";
echo "Result: 2019-2020";
您可以使用爆炸和解析值来减去值
$minusYear = 1;
$myString = "2020-2021";
$myArray = explode('-', $myString);
foreach($myArray as $k => $v)
{
$myArray[$k] = (int) $myArray[$k] - $minusYear;
}
echo "Result ".$myArray[0]."-".$myArray[1];
您不需要将1-1
硬塞到您的方法中,从而使您的任务复杂化。使用preg_replace_callback()
在一行代码中定位和递减数字子字符串。
此方法以数字为目标,因此即使分隔字符发生变化也不会中断。
代码(演示):
$yearSpan = '2020-2021';
echo preg_replace_callback('/d+/', fn($m) => --$m[0], $yearSpan);
减少完整字符串匹配--$m[0]
也可以写成简单减法:$m[0] - 1
.