2016-09-16 185 views
1

我在我的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指數消失了嗎?

+0

嘗試使用字符串,如「01」索引:「A」等 – Napas

回答

2

的原因是,如果你不使用引號0102 ... 07被解釋爲基地8號(八進制),0809Invalid 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

0

這就是整數字符串之間的差異。

更改01'01'並且您的問題已解決。

但是,爲什麼你將所有的字母字符存儲在parameters.yml中?它似乎並沒有被環境相關的,有一個簡單的方法來獲得相同的排列是這樣的:

$alphas = range('A', 'L'); 
1

PHP使用0前綴來表示後面的數字是八進制。因此8和9是無效的。

只需運行echo 08;echo 09;即可查看錯誤輸出。