【问题标题】:Number index in parameters.yml corrupted Symfony2parameters.yml 中的数字索引损坏 Symfony2
【发布时间】:2016-09-16 15:32:53
【问题描述】:

我的 parameters.yml 中有一个月份数组,它使 php 函数 date('m')(带前导零的月份数)与默认选择的用于生成代码的字母之间存在关系。

months:
    01: 'A'
    02: 'B'
    03: 'C'
    04: 'D'
    05: 'E'
    06: 'F'
    07: 'G'
    08: 'H'
    09: 'I'
    10: 'J'
    11: 'K'
    12: 'L'

这是 var_dump($this->getParameters('months')) 的结果:

数组(大小=11)
1 => 字符串“A”(长度=1)
2 => 字符串“B”(长度=1)
3 => 字符串“C”(长度=1)
4 => 字符串“D”(长度=1)
5 => 字符串“E”(长度=1)
6 => 字符串“F”(长度=1)
7 => 字符串“G”(长度=1)
0 => 字符串“H”(长度=1)
10 => 字符串“J”(长度=1)
11 => 字符串“K”(长度=1)
12 => 字符串“L”(长度=1)

我终于解决了它删除了索引的前导零,但是有人知道为什么 08 更改为 0 并且 09 索引消失了吗?

【问题讨论】:

  • 尝试使用字符串作为索引,例如“01”:“A”等

标签: php symfony yaml


【解决方案1】:

原因是如果不使用引号0102 ... 07 被解释为基数 8 数字(八进制),0809Invalid numeric literal(无效的 base 8 数字),10..12 被解释为整数,您需要使用引号来解决这个问题:

months:
    '01': 'A'
    '02': 'B'
    '03': 'C'
    '04': 'D'
    '05': 'E'
    '06': 'F'
    '07': 'G'
    '08': 'H'
    '09': 'I'
    '10': 'J'
    '11': 'K'
    '12': 'L'

在此处查看参考http://symfony.com/doc/current/components/yaml/yaml_format.html#numbers

【讨论】:

    【解决方案2】:

    PHP 使用 0 前缀来表示后面的数字是八进制的。因此 8 和 9 无效。

    只需运行echo 08;echo 09; 即可查看错误输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      相关资源
      最近更新 更多