2013-04-24 58 views
1

我已經從php.net取得了這段代碼,但我需要解釋百分比符號在做什麼。我已經改變了幾年,並獲得新的結果,但它似乎很隨機。我需要關於百分比符號運算符的一些解釋

<?php 
    function getChineseZodiac($year){ 

     switch ($year % 12) : 
      case 0: return 'Monkey'; // Years 0, 12, 1200, 2004... 
      case 1: return 'Rooster'; 
      case 2: return 'Dog'; 
      case 3: return 'Boar'; 
      case 4: return 'Rat'; 
      case 5: return 'Ox'; 
      case 6: return 'Tiger'; 
      case 7: return 'Rabit'; 
      case 8: return 'Dragon'; 
      case 9: return 'Snake'; 
      case 10: return 'Horse'; 
      case 11: return 'Lamb'; 
     endswitch; 
    } 

    echo getChineseZodiac(2016); 
    ?> 

我讀過這是一個模運算符,其餘部分。提前致謝。

+1

我只是想補充一點,因爲你學習的是PHP,你會偶然發現一大堆用於各種方式的奇怪符號,其中一些符號會在不同的環境下使用兩次,從而產生不同的結果。爲了避免混淆,請將此頁作爲參考,它將成爲您最好的朋友! http://php.net/manual/en/language.operators.php – ILikeTacos 2013-04-24 22:51:57

回答

7

mod運算符返回除法的其餘部分。

例如, 7 % 3是1,因爲你divide 7 by 3後的剩餘全數爲1

在上述

2004/12 = 167 

但分割的提示爲0的代碼,自2004年以來是通過12.

所以完全除盡

2004 % 12 = 0 
+0

非常感謝。 – 2013-04-24 22:52:38

3

這裏的目的是「環繞」在12,讓你得到它重複每12年一個序列。

其餘(模數)運算符通常以這種方式使用。如果你從第11年開始,$year % 12將返回當然是11/12的剩餘部分,所以該值不變。然而,從第12年開始,這個數字將回繞:12/12的剩餘部分爲0,13/12的剩餘部分爲1,依此類推。

因此,$year % 12連續數年一直在循環數字0到11,就像中國的十二生肖一樣。

+0

我當然很欣賞答案,謝謝。 – 2013-04-24 22:53:08