PHP未定义偏移量数组

PHP未定义偏移量数组,php,arrays,undefined,offset,Php,Arrays,Undefined,Offset,我正在尝试使用和数组来打印一个月名称的前三个字母(我知道我可以用date()来实现这一点,但我正在用PHP学习数组,这似乎是最简单的)。 每次运行底部的代码时,我都会收到下面的错误代码 注意:第17行C:\Documents and Settings\Garry\My Documents\Dropbox\htdocs\Web Apps\Locand2\Alpha\step2.php中未定义的偏移量:8 只有在$monthArray[]的索引部分键入8或9时,才会出现此问题 <?php $

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

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

只有在
$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];

?>

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

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

试试这个

echo $monthArray['08'];
或 echo$monthArray[08]

您使用的键似乎不同

试试这个

echo $monthArray['08'];
或 echo$monthArray[08]


您使用的键似乎不同

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

这项工作:

echo $monthArray[08];

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

这项工作:

echo $monthArray[08];

写入
echo$monthArray[08]而不是
echo$monthArray[8]

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

在数字前加0表示PHP将其解析为八进制值,就像加0x表示将其解析为十六进制值一样。去掉零点,它就会正常工作

echo 07; // prints 7
echo 010; // prints 8
这主要用于指定unix权限:

chmod("myfile", 0660);
除此之外,这很少是你想做的事情

这在中进行了描述

As 08和09转换为八进制。他们的价值正被放在最重要的位置
数组中的$monthArray[00]值

在数字前加上0表示PHP将其解析为八进制值,就像加上0x使其解析为十六进制值一样。去掉零点,它就会正常工作

echo 07; // prints 7
echo 010; // prints 8
这主要用于指定unix权限:

chmod("myfile", 0660);
除此之外,这很少是你想做的事情

这在中进行了描述

As 08和09转换为八进制。他们的价值正被放在最重要的位置

数组中的$monthArray[00]值

删除0或作为echo调用$monthArray[08];你试过每个号码吗?:)给大家
echo$monthArray[08]答案,请在发布前试用您的代码。这将呼应“九月”而不是“八月”。他在数组键中使用0时出错。向他解释为什么他不愿意脱口而出一些你甚至没有花时间测试的东西。删除0或调用echo$monthArray[08];你试过每个号码吗?:)给大家
echo$monthArray[08]答案,请在发布前试用您的代码。这将呼应“九月”而不是“八月”。他在数组键中使用0时出错。向他解释为什么他不愿意脱口而出一些你甚至没有花时间测试的东西。@JeremyD,因为索引缩写为8,而不是像他那样保留为“08”。这是因为PHP会将前导0的整数解释为八进制。对于01-07,一切都正常,因为它们的十进制和八进制是相同的。请解释为什么最好删除前导0,而不是引用索引[08]。(提示:混合指数)为所有成功的人欢呼。我想我已经试过了,但我一定是错过了CTRL+S组合键。还感谢你添加了Elon Than,我不明白为什么有些不起作用,而有些不起作用。@JeremyD,因为索引缩写为8,而不是像他那样保留为“08”。它起作用是因为PHP将前导0的整数解释为八进制。对于01-07,一切都正常,因为它们的十进制和八进制是相同的。请解释为什么最好删除前导0,而不是引用索引[08]。(提示:混合指数)为所有成功的人欢呼。我想我已经试过了,但我一定是错过了CTRL+S组合键。也谢谢你的加入,伊隆·丹,我不明白为什么有些人不工作,而另一些人不工作。不。这将是九月而不是八月。啊,对不起,你是对的。我忘了0x数字被视为八进制数字。不。这将是九月而不是八月。啊,对不起,你是对的。我忘了0x数字被视为八进制数字。