我有这个代码 - 我取一个用户值,如果它在数组中,它将输出该数组值,后面的值和之前的值。他们的方式我做得很好(我不确定是否有更简单的方法!),唯一的问题是 - 如果该值已经被索引为0,它可以' t -1并且它会导致错误。我想要做的是如果用户进入星期一,那么输出将是 - 星期日,星期一,星期二。
如果用户DID进入星期一,我该如何处理呢?
这是我的代码 -
<?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>";
}
}
}
}
?>
谢谢!
答案 0 :(得分:0)
你可以添加一个if case。
if($i == 0)
echo "SUNDAY";
else
echo strtoupper($days[$i-1]);
答案 1 :(得分:0)
您可以在if
之前添加echo
。
if($i>0){
echo strtoupper($days[$i-1]) . "<br>";
} else {
echo "Monday";
}
答案 2 :(得分:0)
使用日期和时间,使用专门为此开发的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"
}
两种解决方案都能正常使用&#34; edge&#34;一周中的几天,即&#34;星期一&#34;和&#34;星期日&#34;。