<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            php語言

            PHP面試題目:一周計算

            時間:2025-03-05 10:03:32 賽賽 php語言 我要投稿
            • 相關推薦

            PHP面試題目:一周計算

              無論是身處學校還是步入社會,我們最離不開的就是試題了,試題有助于被考核者了解自己的真實水平。還在為找參考試題而苦惱嗎?下面是小編精心整理的PHP面試題目:一周計算,歡迎閱讀與收藏。

            PHP面試題目:一周計算

              PHP面試題目:一周計算

              這是一個相當常見的介紹性job-interview任務,在本文中我將解決和解釋其背后的數學。我沒有電影那么隨意扔簡化和修正我——我相信我是一個不必要的復雜的。本文將呈現接近問題的兩個方面——一個可以讓你精神這么做動態(給你的朋友留下深刻印象,我猜?),和一個電腦更友好(更少的代碼行,更多)。

              日歷的定義我得到了如下:

              每年有13個月 甚至每一個月21天,每個奇怪的月有22 13月缺少一天每個閏年 閏年是任何被5整除 每周7天:星期天,星期一,星期二,星期三,星期四,星期五,星期六

              任務如下:

              考慮到1900年的第一天是星期一,編寫一個函數,將打印給定日期的星期。的例子中,輸入{:17日月:11日:2013 }輸出“星期六”。

              在本文的其余部分,我將使用以下日期格式:dd.mm。yyyy,因為它是什么是有意義的

              準備

              在開始任何聰明的風險之前,有一個適當的環境設置是很重要的,以避免浪費時間在那些可能是提前準備。我總是建議你進入編碼面試任務躍躍欲試的開發環境,可以測試您的代碼在片刻的注意。

              創建一個新文件夾包含兩個子文件夾:classes,public。是的,這是一個一次性的任務,它可以解決一個簡單的程序功能,但我喜歡徹底。你就會明白為什么。

              在classes子文件夾,創建一個空的PHP類CalendarCalc.php。在public子文件夾,創建一個文件index.php用下面的內容:

              如果你可以在瀏覽器中打開這個顯示“Hello”,您已經準備好開始。

              CalendarCalc初始化

              使事情更容易驗證和想象,我創建了一個演示方法從1.1.1900打印出整個日歷。22.13.2013。這將使我們能夠輕松地檢查我們的計算功能。不過,首先初始化類一樣:

              iNumDays = count($this->aDays);

              $this->iStartDayIndex = array_search(Monday, $this->aDays);

              $this->aInput = array(d => $day, m => $month, y => $year);

              }

              public function demo() {

              }

              }

              讓我們解釋受保護的屬性。

              $aDays是一個數組。定義它確保每個星期有數字索引分配——至關重要的在確定星期后的一天。我們緩存它的長度$iNumDays財產。這讓我們擴展數組在以后的日子里,如果我們選擇——另一個任務可能會問同樣的計算,但提到本周可能已經或多或少地超過7天。

              $iStartDayIndex是周一的索引(在本例中),因為一開始天周一(1.1.1900)被定義為在任務描述。當我們開始一天的索引,我們可以用它與計算抵消得到真正的星期。你會明白我的意思。

              $aInput是一個數組來保存輸入值。當我們實例化CalendarCalc,我們通過的日期值我們想知道本周的日子。這個屬性存儲這些值,可供我們每想出calc方法,從而確保我們不需要它們,或者更糟的是,重復它們在另一個函數調用。的邏輯$aInput,$iStartDayIndex和$iNumDays是在__construct方法。

              其他屬性都是不言而喻的。

              現在,填充demo()方法用下面的內容:

              public function demo() {

              $demoYear = $this->startYear;

              $totalDays = 0;

              while ($demoYear < 2014) {

              echo "$demoYear";

              $demoMonth = 1;

              while ($demoMonth < 14) {

              echo "";

              echo "";

              $dayCount = ($demoMonth % 2 == 1) ? 22 : 21;

              $dayCount = ($demoMonth == 13 && $demoYear % 5 == 0) ? 21 : $dayCount;

              $demoDay = 1;

              echo "";

              while ($demoDay <= $dayCount) {

              $index = ++$totalDays % 7;

              if ($demoDay == 1) {

              for ($i = 0; $i < $index-1; $i++) {

              echo "";

              }

              if ($index == 0 || $index == 7) {

              $i = 6;

              while ($i--) {

              echo "";

              }

              }

              }

              echo "";

              if ($index == 0) {

              echo "";

              }

              $demoDay++;

              }

              echo "";

              $demoMonth++;

              }

              echo "

              ";

              $demoYear++;

              }

              }

              別煩試圖理解這種方法——它是完全不重要。這只是幫助我們驗證工作,并根據第二個解決方案實際上是部分我們將在本文中呈現。

              改變的內容索引。php文件:

              demo();

              …并在瀏覽器中打開它。您應該看到一個日歷輸出,我們現在有一種檢查結果17.11.2013真理(注意日期。確實是周六)。

              精神的方式

              心理的方法計算其實很簡單。首先,我們需要的數量閏年日期之間的基地,和給定日期。1900是被5整除,本身就是一個閏年。跳躍的數量因此年之間的差異日期輸入日期和基地,除以5,四舍五入(只有充分運行年統計,自然),1900年加一。創建一個新的方法CalendarCalc被稱為calcFuture并給它這個內容:

              $iLeaps = floor(($this->aInput[y] - $this->startYear) / $this->leapInterval + 1);

              我們甚至還被告知,每個月有21天,和每一個奇怪的月有22:

              1 = > 22

              2 = > 21

              3 = > 22

              4 = > 21

              5 = > 22

              6 = > 21

              7 = > 22

              8 = > 21

              9 = > 22

              10 = > 21

              11 = > 22

              12 = > 21

              13 = > 22(或21日在閏年)

              總天數在一年,因此,280年,或者279年在閏年。如果我們的模7 280%,0,因為280年是被7整除。在閏年,模是6。

              這意味著每年的日歷在同一天開始,除了閏年,當它開始那天,在前一年的第一天。因此,如果1.1.1900。周一:

              1.1.1901。是星期一

              1.1.1902。是星期天

              1.1.1903。是星期天

              1.1.1904。是星期天

              1.1.1905。是星期六

              1.1.1906。是星期六

              等…

              根據這一點,我們可以計算的數量一天行動,直到我們的輸入。看到我們知道我們有23跳躍,直到輸入日期(2013),我們搬回一天23倍。23%的模7是2,這意味著我們總算圓滿3次,然后兩天(這是抵消)——1.1.2013。是星期六。檢查演示日歷,看看自己。

              讓我們先來了解代碼。“飛躍”線以上,后添加以下:

              $iOffsetFromCurrent = $iLeaps % $this->iNumDays;

              $iNewIndex = $this->iStartDayIndex - $iOffsetFromCurrent;

              if ($iNewIndex < 0) {

              $iFirstDayInputYearIndex = $this->iStartDayIndex + $this->iNumDays - $iOffsetFromCurrent;

              } else {

              $iFirstDayInputYearIndex = $iNewIndex;

              }

              首先,我們計算偏移量。然后,我們計算日子的新索引數組,它取決于是否新指數是積極的。這給了我們一周的日子我們輸入年開始。

              我們也知道,每個月X與下個月21天使當日月開始X,因為21% 7 = 0。然而奇怪的幾個月里,開始提前一天(22% 7 = 1)。因此,如果1月從星期六開始,2月從周日開始,周日3月,4月,星期一,等等。我們得出這樣的結論:每一個奇怪的月,通過了今年年初以來直到我們輸入日期1月一天擁有先進的指數。我們在11月,所以奇怪有5個月。新抵消+ 5或在我們的案例中,2013年11月,周四開始。讓我們把它變成代碼立即在前面行。

              $iOddMonthsPassed = floor($this->aInput[m] / 2);

              $iFirstDayInputMonthIndex = ($iFirstDayInputYearIndex + $iOddMonthsPassed) % $this->iNumDays;

              現在剩下的就是看看遠離本月初我們輸入日期的一天。

              $iTargetIndex = ($iFirstDayInputMonthIndex + $this->aInput[d]-1) % $this->iNumDays;

              return $this->aDays[$iTargetIndex];

              我們添加減一天(因為天還沒有通過!),模7日的天數。我們得到的數量是我們的目標指數,可靠地給我們星期六。

              從現在,整個calcFuture的方法CalendarCalc是這樣的:

              /**

              * A more "mental" way of calculating the day of the week

              * @return mixed

              */

              public function calcFuture() {

              $iLeaps = floor(($this->aInput[y] - $this->startYear) / $this->leapInterval + 1);

              $iOffsetFromCurrent = $iLeaps % $this->iNumDays;

              $iNewIndex = $this->iStartDayIndex - $iOffsetFromCurrent;

              if ($iNewIndex < 0) {

              $iFirstDayInputYearIndex = $this->iStartDayIndex + $this->iNumDays - $iOffsetFromCurrent;

              } else {

              $iFirstDayInputYearIndex = $iNewIndex;

              }

              $iOddMonthsPassed = floor($this->aInput[m] / 2);

              $iFirstDayInputMonthIndex = ($iFirstDayInputYearIndex + $iOddMonthsPassed) % $this->iNumDays;

              $iTargetIndex = ($iFirstDayInputMonthIndex + $this->aInput[d]-1) % $this->iNumDays;

              return $this->aDays[$iTargetIndex];

              }

              machine-friendly方式

              也許更簡單的方法是計算的天數,已基本日期、模,7和得到抵消。沒有很多人可以計算數字的大小,不過,這就是為什么它更machine-friendly。

              再一次,我們需要跳躍:

              public function calcFuture2() {

              $iTotalDays = 0;

              $iLeaps = floor(($this->aInput[y] - $this->startYear) / $this->leapInterval + 1);

              }

              然后,考慮到年。經過數年的280次,減去的跳躍數占了天,加一,因為今年仍在進行中。

              $iTotalDays = (280 * ($this->aInput[y] - $this->startYear)) - $iLeaps + 1;

              然后,我們添加在總結所有的運行。

              $iTotalDays += floor($this->aInput[m] / 2) * 21 + floor($this->aInput[m] / 2) * 22;

              最后,我們添加輸入日期的日子,再減去一天因為當前尚未通過:

              $iTotalDays += $this->aInput[d] - 1;

              return $this->aDays[$iTotalDays % $this->iNumDays];

              死很簡單,不是嗎?

              結論

              看到一個生活例子計算,請檢查在這里。你可以瀏覽目錄包含在該URL查看文件,或者您可以下載完整的源代碼,演示網站,以及最后的CalendarCalc類,從GitHub。回購/演示稍微比本文中提供的代碼——一些html5boilerplate用于更有組織性和啟用ajax請求來檢查您輸入的日期作為他們,所以你不需要重新加載屏幕和再生日歷每次檢查日期。

              PHP面試題目:周一的計算

              在PHP中,我們可以使用date()函數來獲取當前日期的詳細信息。要計算周一,我們可以使用date()函數的格式參數和strtotime()函數來實現。

              首先,我們可以使用date(“w”)來獲取當前日期的星期幾。此函數返回的是一個0(表示星期日)到6(表示星期六)的數字。

              然后,我們可以使用strtotime()函數來計算出距離當前日期最近的周一的日期。具體操作是,我們可以使用”strtotime(‘next Monday’)”來獲取下一個周一的日期。

              然后,我們可以使用date()函數來格式化這個日期,并將其輸出。例如,我們可以使用date(“Y-m-d”)來將日期格式化為”年-月-日”的形式。

              下面是一個示例代碼,演示了如何使用PHP來計算周一的日期:

              “`php

              $currentDate = date(“Y-m-d”);

              $currentDayOfWeek = date(“w”);

              $nextMonday = strtotime(‘next Monday’);

              $nextMondayDate = date(“Y-m-d”, $nextMonday);

              echo “當前日期:”.$currentDate.”

              “;

              echo “當前星期幾:”.$currentDayOfWeek.”

              “;

              echo “下一個周一的日期:”.$nextMondayDate.”

              “;

              “`

            【PHP面試題目:一周計算】相關文章:

            php面試題目有哪些08-09

            2017最新PHP經典面試題目07-12

            最新PHP經典面試題目匯總10-28

            PHP算法面試題目及答案10-21

            英文題目的PHP面試題及答案08-21

            八個PHP數組面試題目08-15

            PHP程序員面試題目整理09-30

            PHP面試常見題型09-23

            PHP面試常用知識09-11

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看