1

我正在尝试使用和数组打印出月份名称的前三个字母(我知道我可以使用 date() 来做到这一点,但我正在学习 PHP 中的数组,这似乎最简单)。每次我运行底部的代码时,我都会收到下面的错误代码。

注意:未定义的偏移量:第 17 行 C:\Documents and Settings\Garry\My Documents\Dropbox\htdocs\Web-Apps\Locander2\Alpha\step2.php 中的 8

只有在$monthArray[].

<?php

$monthArray = array(01 => "Jan",
                    02 => "Feb",
                    03 => "Mar",
                    04 => "Apr",
                    05 => "May",
                    06 => "Jun",
                    07 => "Jul",
                    08 => "Aug",
                    09 => "Sep",
                    10 => "Oct",
                    11 => "Nov",
                    12 => "Dec"
                    );

    echo $monthArray[8];

?>
4

5 回答 5

9
$monthArray = array(1 => "Jan",
                    2 => "Feb",
                    3 => "Mar",
                    4 => "Apr",
                    5 => "May",
                    6 => "Jun",
                    7 => "Jul",
                    8 => "Aug",
                    9 => "Sep",
                    10 => "Oct",
                    11 => "Nov",
                    12 => "Dec"
                    );

删除 1-9 之间索引处的零 ( 0)。因为 01 或 02 不是有效的十进制数。

于 2013-09-04T09:56:21.583 回答
5

在数字前添加 0 意味着 PHP 将其解析为八进制值,就像添加 0x 会导致将其解析为十六进制值一样。删除零,它会正常工作。

echo 07; // prints 7
echo 010; // prints 8

这主要在指定 unix 权限时使用:

chmod("myfile", 0660);

除此之外,它很少是你想做的事情。

这在PHP 手册中有描述。

<?php

$monthArray = array(
                    00 => "Jan",
                    01 => "Jan",
                    02 => "Feb",
                    03 => "Mar",
                    04 => "Apr",
                    05 => "May",
                    06 => "Jun",
                    07 => "Jul",
                    08 => "Aug",
                    09 => "Sep",
                    10 => "Oct",
                    11 => "Nov",
                    12 => "Dec"
                    );

    echo $monthArray[0];
    echo "<pre>";
    var_dump($monthArray);

?>

输出 :

Sep

array(11) {
  [0]=>
  string(3) "Sep"
  [1]=>
  string(3) "Jan"
  [2]=>
  string(3) "Feb"
  [3]=>
  string(3) "Mar"
  [4]=>
  string(3) "Apr"
  [5]=>
  string(3) "May"
  [6]=>
  string(3) "Jun"
  [7]=>
  string(3) "Jul"
  [10]=>
  string(3) "Oct"
  [11]=>
  string(3) "Nov"
  [12]=>
  string(3) "Dec"
}

因为 08 和 09 被转换成八进制。它们的值被放置在数组中的 $monthArray[00] 值

于 2013-09-04T10:11:36.987 回答
2

试试这个,

echo $monthArray['08'];

或回显 $monthArray[08];

您使用的密钥似乎不同

于 2013-09-04T09:57:09.667 回答
0

这是一个键值数组,因此您需要访问键 08 而不是 8:

这有效:

echo $monthArray[08];
于 2013-09-04T09:58:04.000 回答
0

echo $monthArray[08];而不是echo $monthArray[8];

于 2013-09-04T10:00:05.530 回答