我有一个脚本,用于设置形成下拉列表的日期数组。该数组由一些关于当前日期的变量和最后一个日期(两周)的固定偏移量设置。剥掉这就是它的样子:
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
以及我能想到的其他技巧,但我只得到其中任何一个结果
我想我可能会在do-while循环中忽略这一点;如何排除if ($dayofweek == 0) { continue;}
?
答案 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会在没有星期天的情况下为您提供日期。