2016-09-12 56 views
2

我碰到這個例子中,PHP文件中運行:PHP手冊:數字轉換爲Is_Numeric示例1?

<?php 
$tests = array(
    "42", 
    1337, 
    0x539, 
    02471, 
    0b10100111001, 
    1337e0, 
    "not numeric", 
    array(), 
    9.1 
); 

foreach ($tests as $element) { 
    if (is_numeric($element)) { 
     echo "'{$element}' is numeric", PHP_EOL; 
    } else { 
     echo "'{$element}' is NOT numeric", PHP_EOL; 
    } 
} 
?> 

輸出:

'42' is numeric 
'1337' is numeric 
'1337' is numeric 
'1337' is numeric 
'1337' is numeric 
'1337' is numeric 
'not numeric' is NOT numeric 
'Array' is NOT numeric 
'9.1' is numeric 

'42' 後,所有的五個例子評估爲 '1337'。我可以理解爲什麼'1337e0'(科學記數法)就是這種情況,但我不明白爲什麼其他人會這樣。

我沒有在文檔的評論中找到任何人提及它,我沒有在這裏發現它,所以任何人都可以解釋爲什麼'0x539','02471'和'0b10100111001'都評估爲'1337'。

回答

2

當輸出所有數字轉換爲正常表示。這是十進制數字系統和非科學記數法(例如1e10 - 科學浮點數)。

十六進制:

進制數開始0x和後跟任何0-9a-f

0x539 = 9*16^0 + 3*16^1 + 5*16^2 = 1337 

八:

八進制數字開始與0,並且只含有0-7的整數。

02471 = 1*8^0 + 7*8^1 + 4*8^2 + 2*8^3 = 1337 

二進制:

二進制數開始0b和含有0 S和/或1秒。

0b10100111001 = 1*2^0 + 1*2^3 + 1*2^4 + 1*2^5 + 1*2^8 + 1*2^10 = 1337 
相關問題