我試圖做一些與橫幅旋轉器有點不同的東西。連續顯示旋轉橫幅所需的PHP條件處理
下面是我用來閱讀兩個文本文件(存儲在根擴展名爲.db的根目錄下)在網站上旋轉橫幅的腳本。一個文件包含一個計數器(FileDB),另一個包含HTML橫幅代碼(URLDB)。
URLDB文件當前包含六行HTML代碼以顯示超鏈接橫幅。
下面的腳本將建立一個數組,並從頁0計數的刷新順序旋轉這些橫幅 - 5,和它這樣做完全:
<?php
define('FILEDB', '/WORKING DIRECTORY/count.db');
define('URLDB', '/WORKING DIRECTORY/url.db');
function readURLS()
{
$fo = fopen(URLDB, 'r');
if(null == $fo)
return false;
$retval = array();
while (($line = fgets($fo)) !== false)
{
$retval[] = $line;
}
return $retval;
}
$list = readURLS();
if(false === $list)
{
echo "No URLs available";
}
else
{
$fo = fopen(FILEDB, 'a+');
$count = (fread($fo, filesize(FILEDB)) + 1) % count($list);
ftruncate($fo, 0);
fwrite($fo, "{$count}");
fclose($fo);
echo $list[$count];
}
?>
在網頁上,我想顯示的橫幅有八個佔位符。不過,我只有六個橫幅。
這裏是在各佔位符的PHP的代碼:在0
Placeholder 1: <?php echo $list[$count];?>
Placeholder 2: <?php echo $list[$count +1];?>
Placeholder 3: <?php echo $list[$count +2];?>
Placeholder 4: <?php echo $list[$count +3];?>
Placeholder 5: <?php echo $list[$count +4];?>
Placeholder 6: <?php echo $list[$count +5];?>
Placeholder 7: <?php echo $list[$count +6];?>
Placeholder 8: <?php echo $list[$count +7];?>
與計數的6個橫幅顯示在佔位符1 - 6和佔位符7和8是空白的。
隨着每次刷新,計數器將增加1,顯示第一個放置的持有人中的每個橫幅,並通過每個佔位符從5到0拉動其他橫幅,但留下先前填充的佔位符,直到第六個橫幅佔位符爲止。然後在下一個刷新橫幅1 - 6再次顯示。
發生這種情況是因爲我對每個佔位符中的值進行了硬編碼,我顯然試圖引用文件中超出上述腳本構建的數組邊界的條目。
您可以看到一個工作示例here。
我想要實現的是在URLDB中顯示所有橫幅,以便在顯示最後一個條目時,第一個條目顯示在下一個佔位符(在本例中爲佔位符7),第二個條目顯示在佔位符8中。
這個想法是,橫幅不斷移動通過每個佔位符,如列車的車廂,每個頁面刷新和增量的櫃檯 - 一個接着一個。
所以,現在你有背景,對我的問題。
有沒有一種方法可以修改腳本,以便在PHP變量中存儲URLDB文件/數組中最大數量的條目,並隨後在佔位符中添加條件處理以檢查計數器何時達到此最大值,以及引用數組中的下一個有效值(即0),使得橫幅在剩餘佔位符中再次重新啓動 - 所以這裏沒有顯示空白或空的佔位符?
我想這可能看起來像一個奇怪的請求。但是,當然,我會很感激任何關於如何根據目前情況實現我的目標的建議。
我看到這是你的第一篇文章;歡迎來到SO!有幾件事你應該知道。首先,我沒有讀過你的問題,但只是通過審查它,似乎可能會有更多的組織和孤立的問題。用最廣泛的術語解釋問題是最好的。例如,不要說「爲什麼我的$ blah變量不會在以下100行腳本中複製」,請查明真正的問題是什麼,並詢問「爲什麼不使用變量變量時不要複製? 「希望這是有道理的。換句話說,人們對更廣泛(但足夠具體)的問題做出更多回應。 – jeremy
嗨,傑里米,謝謝。我以爲我在我的問題中確實解決了這個問題 - 即試圖給出我已經完成並試圖實現的背景(僅在標題中很難描述)。 – user2692412