2013-12-03 18 views
0

目前,我会在7天内显示4张幻灯片,如下面的代码所示。我这样做,那么每个项目得到一个滑动一,二,三等公平等。任何人都可以看到一个更好的方式来做到这一点?目前,如果我想添加新的幻灯片,我必须重新排列每个变量的顺序,这并不理想。PHP - 在元素之间均匀分配幻灯片7天(可缩放)

<?php 
$varOne = "<li>varOne item</li>"; 
$varTwo = "<li>varTwo item</li>"; 
$varThree = "<li>varThree item</li>"; 
$varFour = "<li>varFour item</li>"; 

date_default_timezone_set("Europe/London"); 
$day = date("D"); 

if($day == "Mon"){ 
    $items = compact('varOne','varTwo','varThree','varFour'); 

} elseif($day == "Tue"){ 
    $items = compact('varFour','varOne','varTwo','varThree'); 

} elseif($day == "Wed"){ 
    $items = compact('varThree','varFour','varOne','varTwo'); 

} elseif($day == "Thur"){ 
    $items = compact('varTwo','varThree','varFour','varOne'); 

} elseif($day == "Fri"){ 
    $items = compact('varOne','varTwo','varThree','varFour'); 

} elseif($day == "Sat"){ 
    $items = compact('varFour','varOne','varTwo','varThree'); 

} elseif($day == "Sun"){ 
    $items = compact('varThree','varFour','varOne','varTwo'); 

} 

echo "<ul>"; 
foreach($items as $item){ 
    echo $item; 
} 
echo "</ul>"; 
?> 
+0

滑的最高金额你知道幻灯片的最大数,可能是可用? – 2013-12-03 19:59:34

回答

3

只需填写$items阵列,就大功告成了:

$items = array(
    "<li>varOne item</li>", 
    "<li>varTwo item</li>", 
    "<li>varThree item</li>", 
    "<li>varFour item</li>", 
); 

date_default_timezone_set("Europe/London"); 
$start = date('N') - 1; // not quite right but working  

$infinite = new InfiniteIterator(new ArrayIterator($items)); 
$limit = new LimitIterator($infinite, $start, count($items)); 

echo "<ul>"; 
foreach($limit as $item){ 
    echo $item; 
} 
echo "</ul>"; 

说明:

它的工作原理与InfiniteIteratorLimitIterator组合。

InfiniteIterator允许无限次迭代迭代器,而不必在到达其末尾时手动倒回迭代器。

而且LimitIterator

的LimitIterator类允许遍历所有的项目在一个Iterator有限的子集。

只要看看,并尝试我张贴的网页上的例子。 SPL中有更多的迭代器(标准PHP库)。他们非常有帮助。

SPL Iterators

date('N')返回整数1 (for Monday) through 7 (for Sunday)。所以我只是减去一个,因为LimitIterator$offset$start)是基于零的。我已用not quite right but working评论,因为您使用了另一次轮换。 (周二应该从varFour开始,而不是varTwo)只要尝试更改$start变量。我把这留给你作为挑战。 ;)

顺便说一句,值得看看SPL提供的其他东西。有非常酷的数据结构,例外和接口等,你可以使用,不必重新发明轮子。

Standard PHP Library (SPL)

+0

这是否会在7天的时间内实现每天的不同订单,确保每件商品都得到公平的订单(在给定奇数的情况下是合理的)? – 2013-12-03 20:12:08

+0

是的,它会给出相同的输出。更动态一点。 – bitWorking

+0

谢谢,我试着研究你的答案,然后我可以理解它是如何工作的。你可以简单解释一下如果没有问题发生了什么?非常感谢,标记为正确。 – StevenPHP

0

,如果你知道,例如,7获准

$varOne = "<li>varOne item</li>"; 
$varTwo = "<li>varTwo item</li>"; 
$varThree = "<li>varThree item</li>"; 
$varFour = "<li>varFour item</li>"; 
$varFive = ""; // populate if and when required 
$varSix = ""; // populate if and when required 
$varSeven = ""; // populate if and when required 

date_default_timezone_set("Europe/London"); 
$day = date("D"); 

if($day == "Mon"){ 
    $items = compact('varOne','varTwo','varThree','varFour','varFive','varSix','varSeven'); 

} elseif($day == "Tue"){ 
    $items = compact('varSeven','varFour','varOne','varTwo','varThree','varFive','varSix'); 

} elseif($day == "Wed"){ 
    $items = compact('varSix','varSeven','varThree','varFour','varOne','varTwo','varFive'); 

} elseif($day == "Thur"){ 
    $items = compact('varFive','varSix','varSeven','varTwo','varThree','varFour','varOne'); 

} elseif($day == "Fri"){ 
    $items = compact('varOne','varTwo','varThree','varFour','varFive','varSix','varSeven'); 

} elseif($day == "Sat"){ 
    $items = compact('varFour','varOne','varFive','varSix','varSeven','varTwo','varThree'); 

} elseif($day == "Sun"){ 
    $items = compact('varThree','varFour','varFive','varSix','varSeven','varOne','varTwo'); 

} 

echo "<ul>"; 
foreach($items as $item){ 
    if($item !=""){ 
     echo $item; 
    } 
} 
echo "</ul>";