2017-08-03 117 views
0
define ("num", "12"); 
echo num%8; 

從我從谷歌發現,定義()保持一個恆定值,數值爲num12。所以我的困惑是如何當echo num%8等於4?有人可以解釋這一點嗎?PHP定義()值混淆

+0

'12/8 = 1,12%8 = 4'這是['modulo operation'](https://en.wikipedia.org/wiki/Modulo_operation)給你分割後的剩餘部分。 –

+0

我明白這一點。但是這個:define(「num」,「12」)真的意味着什麼?是num是持有值12?所以當echo%8實際上是12%8? – Zareen

+0

你爲什麼不[閱讀手冊](http://php.net/manual/en/function.define.php)?在頁面上有示例顯示了這一點。 –

回答

1

顧名思義,define函數在運行時定義變量。所以define("num", "12")只是定義了名爲num的變量,其內容爲"12"

manual

定義 - 定義了一個名爲恆


之後,你有num % 8基本上計算爲12 % 8。此時PHP會將您的String值轉換爲Integer的值,因爲您要求%運營商,該運營商在號碼上運行。因此請參閱echo "12" % 8,其中也輸出4。正如你看到的PHP自動轉換的類型,如果你需要它

define("num", "12"); 
echo gettype(num); // Outputs: string 
echo gettype(num + 1); // Outputs: integer 

所以:

作爲一個小實驗,看看這個。


最後需要注意的是%模運算。它將數字左邊的數字除以右邊的數字,並返回餘數。 所以12/814的其餘部分。這就是爲什麼它輸出4

+0

感謝您的解釋!我現在明白了。 – Zareen