在do-while循环中跳过一个值

时间:2017-10-11 09:10:12

标签: php do-while

我有一个脚本,用于设置形成下拉列表的日期数组。该数组由一些关于当前日期的变量和最后一个日期(两周)的固定偏移量设置。剥掉这就是它的样子:

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;
}

事情是我想要忽略所有的周日&#39;选项,我已经得到每个的$dayofweek变量,其中星期日是0.我已经尝试将整个事物包装在do函数的if语句中({ {1}}),设置一个if $dayofweek !== 0以及我能想到的其他技巧,但我只得到其中任何一个结果

  • 1:仅显示第一个日期
  • 2:显示第一个星期日之前的所有日期,之后没有
  • 3:显示所有日期

我想我可能会在do-while循环中忽略这一点;如何排除if ($dayofweek == 0) { continue;}

2 个答案:

答案 0 :(得分:2)

对我来说是这样的,我使用的同时因为......当第一次不检查你的情况时(...)你最后一次进入你的循环,当你使用的时候( ...} {}每次你的程序都会检查你的状况

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;
}

答案 1 :(得分:0)

假设数组是

$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会在没有星期天的情况下为您提供日期。