我有这样的代码 - 我取一个用户值,如果它在数组中,它将输出该数组值、它后面的值和之前的值。他们的方式我已经做到了(我不确定是否有更简单的方法!),唯一的问题是 - 如果值已经索引为 0,它不能 -1 并且会导致错误。我希望它做的是,如果用户输入星期一,那么输出将是 - 星期日,星期一,星期二。
我将如何做到这一点,以便如果用户确实输入星期一,我会放最后一个值?
这是我的代码 -
<?php
$user_input = $_POST ['user_input'];
$user_input_lower = strtolower($user_input);
$days= array(
0 => 'Monday',
1 => 'Tuesday',
2 => 'Wednesday',
3 => 'Thursday',
4 => 'Friday',
5 => 'Saturday',
6 => 'Sunday'
);
for ($i=0; $i < 7 ; $i++) {
if(isset($days[$i]) && $days[$i] == $user_input_lower) {
{
{
echo strtoupper($days[$i-1]) . "<br>";
echo strtoupper($days[$i]) . "<br>";
echo strtoupper($days[$i+1]) . "<br>";
}
}
}
}
?>
谢谢!
您可以添加 if 大小写。
if($i == 0)
echo "SUNDAY";
else
echo strtoupper($days[$i-1]);
您可以在echo
之前添加if
。
if($i>0){
echo strtoupper($days[$i-1]) . "<br>";
} else {
echo "Monday";
}
有了日期和时间,使用专门为此开发的PHP函数要容易得多,而不是重新发明轮子。下面是使用DateTime
对象的简单示例:
$now = new 'DateTime('monday');
$next = clone $now;
$next->modify('+1 day');
$prev = clone $now;
$prev->modify('-1 day');
print $prev->format('l'); // "Sunday"
print $now->format('l'); // "Monday"
print $next->format('l'); // "Tuesday"
或者,您的代码可能如下所示:
$days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
if (false !== $i = array_search('Monday', $days)) {
print $i > 0 ? $days[$i-1] : $days[6]; // "Sunday"
print $days[$i]; // "Monday"
print $i < 6 ? $days[$i+1] : $days[0]; // "Tuesday"
}
这两种解决方案都可以在一周中的"边缘"日(即"星期一"和"星期日")上正常工作。