parameter.yml损坏的数字索引Symfony2
问题描述:
我在我的parameters.yml中有一个月数组,它使php函数的日期('m')(月数与前导零)和默认选择的字母之间的关系生成一个代码。parameter.yml损坏的数字索引Symfony2
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($这 - > getParameters( '月'))的结果:
阵列(大小= 11)
1 =>串 'A'(长度= 1)
2 =>串 'B'(长度= 1)
3 =>字符串 'C'(长度= 1)
4 =>字符串 'd'(长度= 1)
5 =>串'E'(长度= 1)
6 =>字符串'F'(长度= 1)
''''长度= 1
11 =>字符串'K' (长度= 1)
12 =>字符串“L”(长度= 1)
我终于解决它除去索引的前导零,但任何人知道为什么08被改变为0和09指数消失了吗?
答
的原因是,如果你不使用引号01
,02
... 07
被解释为基地8号(八进制),08
和09
是Invalid numeric literal
(无效基地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
答
这就是整数和字符串之间的差异。
更改01
至'01'
并且您的问题已解决。
但是,为什么你将所有的字母字符存储在parameters.yml中?它似乎并没有被环境相关的,有一个简单的方法来获得相同的排列是这样的:
$alphas = range('A', 'L');
答
PHP使用0前缀来表示后面的数字是八进制。因此8和9是无效的。
只需运行echo 08;
或echo 09;
即可查看错误输出。
尝试使用字符串,如“01”索引:“A”等 – Napas