【问题标题】:Why won't the first element of this array show in php?为什么这个数组的第一个元素不会在 php 中显示?
【发布时间】:2013-11-17 02:08:56
【问题描述】:

我有一个包含一年中月份的数组,其中包含一个 switch 语句和一个 while 循环,但它不会显示数组的第一个元素,即一月。有人可以帮我解决这个问题吗?

$calendar = array (January, February, March, April, May, June, July, August, September, October, November, December);
while($e < sizeof($calendar)) {

$k++;
$days = 30;
$days2 = 31;
switch ($calendar[$e]) {

    case  $calendar[0]:
    echo "Month ",$k,": $calendar[$e] has $days days <br>";
    break;
    case  $calendar[1]:
    echo "Month $k: $calendar[$e] has 28 or 29 days <br>";
    break;
    case  $calendar[2]:
    echo "Month $k: $calendar[$e] has $days2 days <br>";
    break;
    case  $calendar[3]:
    echo "Month $k: $calendar[$e] has $days days <br>";
    break;
    case  $calendar[4]:
    echo "Month $k: $calendar[$e] has $days days <br>";
    break;
    case  $calendar[5]:
    echo "Month $k: $calendar[$e] has $days days <br>";
    break;
    case  $calendar[6]:
    echo "Month $k: $calendar[$e] has $days2 days <br>";
    break;
    case  $calendar[7]:
    echo "Month $k: $calendar[$e] has $days days <br>";
    break;
    case  $calendar[8]:
    echo "Month $k: $calendar[$e] has $days days <br>";
    break;
    case  $calendar[9]:
    echo "Month $k: $calendar[$e] has $days2 days <br>";
    break;
    case  $calendar[10]:
    echo "Month $k: $calendar[$e] has $days days <br>";
    break;
    case  $calendar[11]:
    echo "Month $k: $calendar[$e] has $days2 days <br>";
    break;

    }
    $e++;
}

【问题讨论】:

  • 1. $e 在使用之前没有定义。 2.您的数组值不在引号中。 3. 你真的应该把 error_reporting 转为报告通知,因为这些都是不好的编程习惯
  • 哦,这解决了我的问题。在循环之前我做了 $e = 0;然后它显示一月。如果您回答作为答案,我会选择您的。谢谢
  • 我做了一个回答。在验证它是您的问题的原因之前,我没有机会尝试它。

标签: php arrays switch-statement


【解决方案1】:

如 cmets 中所述,在使用 $e 之前不要定义它。如您所见,它给出了不可预测的结果。设置它按预期工作。

See it in action.

【讨论】:

    【解决方案2】:

    如果您不介意,请使用日历功能cal_days_in_month()

    $year = 2013
    $arr_month_name = cal_info(0)['months'];
    for ($month=1; $month < 12; $month+=1) {
        $days = cal_days_in_month(CAL_GREGORIAN, $month, $year);
        echo "Month $month: $arr_month_name[$month] has $days days <br/>";
    }
    

    【讨论】:

    • 为什么? echo 函数允许使用逗号。
    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    相关资源
    最近更新 更多