2013-10-07 31 views
2

我是一個初學者,並最近看到了intval()函數,其中「返回var的整數值,使用指定的基地進行轉換」。PHP:各種intval()結果

當我從http://php.net/manual/en/function.intval.php諮詢官方手冊,它舉了一個例子如下

echo intval(42);      // 42 
echo intval(4.2);      // 4 
echo intval('42');     // 42 
echo intval('+42');     // 42 
echo intval('-42');     // -42 
echo intval(042);      // 34 
echo intval('042');     // 42 
echo intval(1e10);     // 1410065408 
echo intval('1e10');     // 1 
echo intval(0x1A);     // 26 
echo intval(42000000);    // 42000000 
echo intval(420000000000000000000); // 0 
echo intval('420000000000000000000'); // 2147483647 
echo intval(42, 8);     // 42 
echo intval('42', 8);     // 34 
echo intval(array());     // 0 
echo intval(array('foo', 'bar'));  // 1 

echo intval(1e10);答案是怎麼走過來是141006540​​8?

+0

intval(042)=> 34 ??! –

+2

@onetrickpony它不是'042',它是八進制42. – Mansfield

+0

@onetrickpony以0開頭的數字被視爲**八進制** ... – ppeterka

回答

2

這個答案解釋它:https://stackoverflow.com/a/13720856/2827152

1E10超過了可以存儲的最大整數值,導致溢出。

+2

不知道您是否需要某些代表,但通常的程序是投票將問題作爲重複進行投票,因此我們不會將問題的答案分散到網站的所有問題。 –