PHP中有一個比較奇怪的現(xiàn)象,就是對于數(shù)字運算時出現(xiàn)NaN(Not a Number)這個值,會使得整個結果變成NaN,并且這個值會耗費極大的資源。下面我們就一起來看看,該如何屏蔽PHP中的NaN。
首先,讓我們來看一下一個例子:
$x = 10 / 0; echo $x;
上面這段代碼,我們試圖將10除以0,由于除以0是無法進行的,所以會得到一個NaN的結果。這個時候,我們再輸出這個NaN值,會得到一個類似于下面的輸出:
NAN
在這種情況下,如果我們將$NaN傳遞給了其它計算的函數(shù),那么這個函數(shù)因為無法識別NaN,也會返回NaN。這樣,就會形成一種連鎖反應,直到整個程序崩潰。
那么該如何屏蔽這個NaN呢?一般來說,我們可以使用PHP中的is_nan()函數(shù)來判斷一個值是否是NaN,如下所示:
$x = 10 / 0; if(is_nan($x)){ echo '無法計算'; }else{ echo $x; }
上面這段代碼中,我們通過is_nan()函數(shù)來判斷$x是否為NaN,如果是,那么就輸出“無法計算”,如果不是,就繼續(xù)計算并輸出結果。
另外,PHP還提供了一個NaN常量,用來代替NaN。這個常量的用法非常簡單,只需要在需要的地方使用即可。例如:
$a = 10 / 0; $b = 20; $c = $a + $b + NAN; echo $c;
上面這段代碼中,我們將$a和$b相加,然后再加上NaN。由于$a是NaN,所以整個計算結果也會是NaN。
總的來說,在PHP中屏蔽NaN是非常重要的一件事情,因為NaN會導致程序無法正常計算,并且還會耗費大量的資源。因此,我們需要注意在編寫代碼時,判斷和屏蔽NaN的出現(xiàn)。