2013-12-03 16 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>";