據我所知,有(int)
鑄造輪趨向於零了一些,但後來我開始比其他10個基地周圍戳,現在我不完全相信別人(int)
什麼呢:在PHP中,(int)實際上做了什麼?
$a = 050; // an octal number
echo $a; // output is ----> 40
然而
$a = '050';
echo (int)$a; // output is ----> 50
所以我認爲(int)
除了舍入零也剪輯前導零。不過,如果我做同樣的運動在第二代碼塊(上圖)與二元我沒有得到我的期望:
$a = '0b010';
echo (int)$a; // output is ----> 0
,並在十六進制:
$a = '0x050';
echo (int)$a; // output is ----> 0
即使使用十進制科學符號給出了一個古怪的結果:
$a = 5e6;
$b = '5e6';
echo $a; // output is ----> 5000000
echo (int)$b; // output is ----> 5
是什麼鑄造用(int)
整數究竟意味着什麼?除了剝離小數點和浮點數後的所有內容之外,(int)
是否逐字符地分析轉換的字符串,並返回所有前導數字非零字符的拼接?就像這樣:
function intCast($str) {
$length = strlen($str);
$returnVal = '';
for($i = 0; $i < $length; $i++) {
// Note: ord() values 48 to 57 represent 0 through 9
if ($returnVal === '' && ord($str[$i]) == 48) {
continue; // leading zeroes are OK but don't concatenate
} else if (ord($str[$i]) > 48 && ord($str[$i]) < 58) {
$returnVal .= $str[$i];
} else {
break;
}
}
return (strlen($returnVal) > 0) ? $returnVal : 0;
}
***請注意,這link似乎並沒有提供足夠的答案。
我真的不明白爲什麼鏈接的問題沒有提供足夠的答案。 – Jocelyn
[文檔](http://php.net/manual/en/language.types.string.php#language.types.string.conversion)告訴您字符串如何轉換爲數字。只是忽略關於浮動的部分,你會看到它對於整數如何工作。 –
'$ a = 050'回聲'40',因爲050被認爲是八進制。 – Aaron