索引为0

时间:2016-02-27 23:55:50

标签: php arrays loops

我有这个代码 - 我取一个用户值,如果它在数组中,它将输出该数组值,后面的值和之前的值。他们的方式我做得很好(我不确定是否有更简单的方法!),唯一的问题是 - 如果该值已经被索引为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>";
              }
            }
        }
      }
        ?>

谢谢!

3 个答案:

答案 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;。