簡體   English   中英

跳過do-while循環中的值

[英]Skip a value in do-while loop

我有一個腳本,可以設置一系列日期,這些日期構成一個下拉列表。 該數組由一些有關當前日期的變量設置,並為最后一個日期(兩周)提供固定的偏移量。 剝離下來是這樣的:

public function getDatesOptionArray()
{
    $datesArray = array();
    $displayDate = Mage::getModel('core/locale')->storeDate();
    $displayDate->add($this->_startDaysOffset, Zend_Date::DAY);
    $dayOffset = $this->_startDaysOffset;

    do
    {
        $dayofweek = date('w', strtotime($displayDate->toString(Varien_Date::DATE_INTERNAL_FORMAT)));

        $datesArray[$displayDate->toString(Varien_Date::DATE_INTERNAL_FORMAT)] = Mage::helper('core')->formatDate($displayDate, Mage_Core_Model_Locale::FORMAT_TYPE_FULL);
        $displayDate->add('1', Zend_Date::DAY);
        $dayOffset++;

    } while ($dayOffset <= $this->_endDaysOffset);

    return $datesArray;
}

問題是我想忽略所有的“星期日”選項,並且每個變量都有$dayofweek變量,其中星期日為0。我試圖將整個函數包裝在if語句中的do函數中( if $dayofweek !== 0 ),則設置一個if ($dayofweek == 0) { continue;}以及我可能想到的所有其他技巧,但我只能得到這些結果之一

  • 1:僅顯示第一個日期
  • 2:顯示直到第一個星期日的所有日期,之后沒有任何日期
  • 3:顯示所有日期

我想我可能會錯過do-while循環的意義; if $dayofweek == 0如何排除?

對我來說是這樣的,我使用while是因為Do ... While(...)第一次不會檢查您的狀況,您將在最后一次進入循環,而當您使用while(... ){},每次程序檢查您的狀況時

public function getDatesOptionArray()
{
  $datesArray = array();
  $displayDate = Mage::getModel('core/locale')->storeDate();
  $displayDate->add($this->_startDaysOffset, Zend_Date::DAY);
  $dayOffset = $this->_startDaysOffset;


  while ($dayOffset <= $this->_endDaysOffset)
  {
   $dayofweek = date('w', strtotime($displayDate->toString(Varien_Date::DATE_INTERNAL_FORMAT)));
   if ($dayofweek != 0) {
      $datesArray[$displayDate->toString(Varien_Date::DATE_INTERNAL_FORMAT)] = Mage::helper('core')->formatDate($displayDate, Mage_Core_Model_Locale::FORMAT_TYPE_FULL);
    }
    $displayDate->add('1', Zend_Date::DAY);

    $dayOffset++;
  }
  return $datesArray;
}

假設數組是

$date = array(
    2017-10-12,
    2017-10-13,
    2017-10-14,
    2017-10-15,
    2017-10-16,
    2017-10-17,
    2017-10-18,
    2017-10-19,
    2017-10-20,
    2017-10-21,
    2017-10-22,
    2017-10-23,
    2017-10-24,
    2017-10-25
);

現在執行此操作以刪除星期日的日期

$i=0;
do{
    if(date('w',strtotime($date[$i]))>0) $dateArray[] = $date[$i];
    $i++;
} while ($i<count($date));
echo "<pre>";print_r($dateArray);
return $datesArray;

$ dateArray將給您沒有星期天的日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM