我在我的parameters.yml中有几个月的数组,这些数字使得php函数日期(' 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索引消失了吗?
答案 0 :(得分:2)
原因是,如果您不使用引号01
,02
... 07
将被解释为基数8(八进制),{{1} }和08
是09
(无效的基数8),Invalid numeric literal
被解释为整数,您需要使用引号来解决此问题:
10..12
请参阅此处的参考http://symfony.com/doc/current/components/yaml/yaml_format.html#numbers
答案 1 :(得分:1)
PHP使用0前缀表示后面的数字是八进制。因此8和9无效。
只需运行echo 08;
或echo 09;
即可查看错误输出。
答案 2 :(得分:0)
这是整数与字符串之间的差异。
将01
更改为'01'
,您的问题就解决了。
但为什么要在parameters.yml中存储所有字母字符?它似乎与环境无关,并且有一种简单的方法来获得相同的数组:
$alphas = range('A', 'L');