我正在尝试使用和数组打印出一个月份名称的前三个字母(我知道我可以用date()来做这个,但我正在学习PHP中的数组,这看起来最简单)。 每次我在底部运行代码时,都会收到以下错误代码。
注意:未定义的偏移量:第17行的C:\ Documents and Settings \ Garry \ My Documents \ Dropbox \ htdocs \ Web-Apps \ Locander2 \ Alpha \ step2.php
如果我在$monthArray[]
的索引部分输入8或9,我只会遇到此问题。
<?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];
?>
答案 0 :(得分: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不是有效的十进制数。
答案 1 :(得分:5)
在数字前加0表示PHP将其解析为八进制值,其方式与前置0x相同,使得它被解析为十六进制值。删除零,它将正常工作。
echo 07; // prints 7
echo 010; // prints 8
这主要在指定unix权限时使用:
chmod("myfile", 0660);
除此之外,你很少想做的事情。
PHP Manual中描述了这一点。
<?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]值
答案 2 :(得分:2)
试试这个,
echo $monthArray['08'];
或 echo $ monthArray [08];
您使用的密钥似乎不同
答案 3 :(得分:0)
这是一个键值数组,因此您需要访问键08而不是8:
这有效:
echo $monthArray[08];
答案 4 :(得分:0)
撰写echo $monthArray[08];
代替echo $monthArray[8];