PHP 关联数组意外行为 - 为什么?

标签 php type-conversion integer octal zero-padding

下面是我在 PHP 代码块中使用的关联数组,该数组使用 SQL 数据库中的数据创建一个有组织的性能日期和信息表。该代码似乎没有问题(对我来说),但在加载网页时行为不正确(某些日期没有出现)。

$months = array(
    01 => 'January',
    02 => 'February',
    03 => 'March',
    04 => 'April',
    05 => 'May',
    06 => 'June',
    07 => 'July',
    08 => 'August',
    09 => 'September',
    10 => 'October',
    11 => 'November',
    12 => 'December',
);

当我运行“var_dump”时,输出如下:

array(11) {
    [1]=> string(7) "January" 
    [2]=> string(8) "February" 
    [3]=> string(5) "March" 
    [4]=> string(5) "April" 
    [5]=> string(3) "May" 
    [6]=> string(4) "June" 
    [7]=> string(4) "July" 
    [0]=> string(9) "September" 
    [10]=> string(7) "October" 
    [11]=> string(8) "November" 
    [12]=> string(8) "December" }

“August”的整行缺失,“September”的键现在是 [0]。

有人可以解释一下我的代码中的错误在哪里吗?

免责声明:我已经通过删除前九个键中的前导零解决了这个问题,但我很困惑为什么它很重要?预先感谢您的任何解释。

最佳答案

08 和 09 是无效的八进制文字...所以您需要做的是:

  1. 将您的键命名为正确的整数(不带 0 前缀)
  2. 或者,使用您的键作为字符串,就像您提到的“关联数组”一样,您的数组应该如下所示:
<?php
$months = array(
    "01" => 'January',
    "02" => 'February',
    "03" => 'March',
    "04" => 'April',
    "05" => 'May',
    "06" => 'June',
    "07" => 'July',
    "08" => 'August',
    "09" => 'September',
    "10" => 'October',
    "11" => 'November',
    "12" => 'December',
);

抱歉想发表评论,但无法发表评论,这里是新用户

关于PHP 关联数组意外行为 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50301832/

相关文章:

php - 如何在 Laravel 5.1 中获取前一周的数据?

javascript - 无法使用 fetch : React 发送 POST 数据

javascript - CodeIgniter - AJAX 生成元素内的 AJAX 分页

java - Spring MVC 转换方法

java - 如何检查一个数组中的多个重复项? [准备Java]

java - 每个枚举项的编号?

php - 在 camelCased 字符串中的单词之间添加空格,然后大写第一个单词

c - 16 字节无符号字符数组作为数字?

c - 将 C++ 代码转换为 C 的问题 - 指向数组的开头

java - 通过 Lambda 表达式从字符串中获取整数