2014-07-18 85 views
-2

我正在展示文章,這是由文章管理器(準備使用PHP腳本)完成的項目,但我有一個問題,我想只顯示從舊列表中的四篇文章標題和摘要包含10篇文章的隨機文章。任何想法如何實現這個過程? 我有當一個新的文章加入上面的代碼將生成並添加到彙總頁的文章如何顯示隨機文章

<div class="a1"> 
<h3><a href={article_url}>{subject}</h3>  
<p>{summary}<p></a> 
</div> 

的自動生成的摘要。我想將它添加到主要文章頁面的一側,用戶只能隨意看到十個或更多的四篇文章。

<?php 
$lines = file_get_contents('article_summary.html'); 
$input = array($lines); 
$rand_keys = array_rand($input, 4); 
echo $input[$rand_keys[0]] . "<br/>"; 
echo $input[$rand_keys[1]] . "<br/>"; 
echo $input[$rand_keys[2]] . "<br/>"; 
echo $input[$rand_keys[3]] . "<br/>"; 
?> 

感謝您的好意。

+0

<?php $ lines = file_get_contents(「test.html」); $ input = array($ lines); shuffle($ input); array_slice($ input,3); foreach($ input as $ post){ echo $ post; } ?> 上面的代碼顯示了所有內容。我想隨機顯示其中的四個 – tombmax

+1

我建議先閱讀http://php.net/manual/en/。在你的情況下http://php.net/manual/en/book.array.php可能會特別有趣。 – Mike

+2

請勿添加評論以進一步解釋您的問題。只需編輯問題。 – Mike

回答

0

假設我正確理解了你 - 一個簡單的解決方案。

<?php 
// Settings. 
$articleSummariesLines = file('article_summary.html', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 
$showSummaries = 4; 

// Check if given file is valid. 
$validFile = ((count($articleSummariesLines) % 4 == 0) ? true : false); 
if(!$validFile) { 
    die('Invalid file...'); 
} 

// Count articles and check wether all those articles exist. 
$countArticleSummaries = count($articleSummariesLines)/4; 
if($showSummaries > $countArticleSummaries) { 
    die('Can not display '. $showSummaries .' summaries. Only '. $countArticleSummaries .' available.'); 
} 

// Generate random article indices. 
$articleIndices = array(); 
while(true) { 
    if(count($articleIndices) < $showSummaries) { 
    $random = mt_rand(0, $countArticleSummaries - 1); 

    if(!in_array($random, $articleIndices)) { 
     $articleIndices[] = $random; 
    } 
    } else { 
    break; 
    } 
} 

// Display items. 
for($i = 0; $i < $showSummaries; ++$i) { 
    $currentArticleId = $articleIndices[$i]; 

    $content = ''; 
    for($j = 0; $j < 4; ++$j) { 
    $content .= $articleSummariesLines[$currentArticleId * 4 + $j]; 
    } 

    echo($content); 
} 
+0

先生,我非常感謝你。它可以很好地工作,因爲我想要的。非常感謝。 – tombmax

+0

這很好:-)。沒問題。 – thedom