鑰匙要點:
(int)((0.1 0.7) * 10)
字符串增量行為:in_array()
作為第三個參數)才能進行準確的結果。 >
in_array()
true
true
浮點數不准確:浮點數不能完美地表示所有實數。 在看似準確的數字上的操作可能會導致微妙的錯誤。這不是PHP獨有的;這是計算機算術的基本限制。 經典的文章“每個計算機科學家對浮點算術都應該了解什麼”提供了深入的解釋。 考慮此代碼:
<?php echo (int) ((0.1 + 0.7) * 10); ?>
0.1 0.7
PHP的字符串增量行為與C等語言不同。
>以數字增量結束的字符串上的增量運算符(
)。如果以字母結尾,則最後一個字母會按字母順序遞增。 以非α數字字符結尾的字符串保持不變。 這種行為經常被忽略。>
和鬆散的比較:> PHP的寬鬆比較規則影響<?php $a = 'fact_2'; echo ++$a; // Output: fact_3 $a = '2nd_fact'; echo ++$a; // Output: 2nd_facu $a = 'a_fact'; echo ++$a; // Output: a_facu $a = 'a_fact?'; echo ++$a; // Output: a_fact? ?>
該函數返回
的非空字符串。 要執行嚴格的比較,請使用第三個參數:in_array()
結論:
這些例子突出了PHP中的潛在陷阱。 始終注意浮點精度限制,了解PHP的唯一字符串增量行為,並在處理數組時使用嚴格的比較,in_array()
避免出乎意料的結果。 對PHP類型處理的透徹理解對於編寫強大而可預測的代碼至關重要。
通過fotolia
圖像 (FAQS部分在很大程度上重複了主內容,並且提供的FAQ與提出的三個奇怪事實無直接相關。)
以上是PHP主| 3個奇怪的PHP事實,您可能不知道的詳細內容。更多資訊請關注PHP中文網其他相關文章!