讓我們假設我有輸出$i
作爲Leading Zero如何在PHP中工作?
$i = 016;
echo $i/2;
//ans will be 7
我知道,前面的零表明PHP的八進制數的代碼,但它是如何解釋的,怎麼能執行?有人可以一步一步地分享它的執行嗎?解析器在這裏的作用是什麼?我研究了很多並閱讀了以前的所有答案,但沒有一個有任何深入的解釋。
讓我們假設我有輸出$i
作爲Leading Zero如何在PHP中工作?
$i = 016;
echo $i/2;
//ans will be 7
我知道,前面的零表明PHP的八進制數的代碼,但它是如何解釋的,怎麼能執行?有人可以一步一步地分享它的執行嗎?解析器在這裏的作用是什麼?我研究了很多並閱讀了以前的所有答案,但沒有一個有任何深入的解釋。
當您在PHP中使用零前面的整數時,在這種情況下,029
。
它變成了八進制。
所以,當你回聲的時候,它會轉換成它的小數形式。
哪些結果:
echo 016; //14 (decimal) valid octal
echo 029; // 2 (decimal) - Invalid octal
實際上,它在manual
有效的八進制這裏所說:
octal : 0[0-7]+
注:如果一個無效的數字在此之前PHP 7,以八進制整數(即8或9)給出,其餘數字被忽略。從PHP 7開始,會發出解析錯誤。
是的,你的答案似乎完美的解釋只是我想編輯的東西是029到2,因爲它不是給完美的十進制數而是使用016到14,這樣任何人都可以輕鬆解讀。謝謝噸:) –
@JayminNoob:029是一個無效的八進制文字,那麼它應該怎麼做呢? –
@ IgnacioVazquez-Abrams我已經提到了同樣的東西,如果它是無效的八進制文字接下來呢? –
的八進制數字系統,或十月的簡稱,是基-8號系統,並使用該數字0至7
八路標記可以從二進制數通過分組連續二進制數字進行分組爲三個(從右側開始)。
例如,對於小數74的二進制表示是1001010.兩個零可以在左側被添加:(00)1 001 010,相應的八進制數字1 1 2,得到的八進制表示112
在你的問題$i = 016;
被解釋計算併產生$i = 14;
(這是equilevant十進制數)
然後你只需除以2,其輸出7.
如果它是無效的八進制文字它接下來會怎麼樣呢? –
看看http://php.net /manual/en/language.types.integer.php –
解釋器轉換dur編輯階段。第一行代碼產生與'$ i = 14;'相同的操作碼。 – axiac
你是什麼意思「深層解釋」?解析器看到一個帶有前導0的整數並將其解釋爲八進制數,那就是它!? :D – xander