2012-12-20 29 views
1

我正在建立一個基於目錄中的php文件的頁面導航。PHP - 將目錄文件列爲導航。如何先顯示索引並顯示爲1?

目前,我在我的目錄中的5個文件:index.php文件,2.PHP,3.php,4.php,5.php

用我有限的PHP技能我已成功地運行代碼以顯示導航爲:[2] [3] [4] [5] [index]

但是我在這個時候已經碰到了一個超出我的路障。

我想[索引]顯示爲[1],我想首先顯示[1]。

我想有它看起來像這樣:[1] [2] [3] [4] [5]

<?php 
    $pathfiles = "../directory/"; 
    $files = glob("../directory/*.php"); 
    foreach($files as $file) { 
     echo '[<a href="'.($pathfiles).'' 
     .basename($file).'">' 
     .basename($file, ".php").'</a>] '; 
    } 
?> 

任何幫助或引線,將不勝感激。預先感謝您的時間。

+0

你總是有一個索引文件呢?然後你可以硬編碼鏈接並將其從循環中排除。 'if(basename($ file)!='index')' – jtheman

+0

@Brandon,將glola的結果存儲到數組中,使用@tepkenvannkorn方法用'1'替換'index',最後對其進行排序並打印。 –

回答

1

您需要在迭代之前將index.php值推到頂部;

$key = array_search('index.php', $files); 
unset($files[$key]); 
natsort($files); 
array_unshift($files, 'index.php'); 

然後,在你迭代,只認準價值的index.php並將其更​​改爲[1]

+1

使用'natsort()'將其他文件也按數字順序排列。 – Barmar

+0

我已經將這個添加到了示例中,但仍然 - 文件應該從一開始就按照正確的順序列出。 – Daniel

+1

glob()使用詞典排序,而不是自然排序。在詞典排序中,11介於1和2之間。 – Barmar

1
<?php 
$pathfiles = "../directory/"; 
$files = glob("../directory/*.php"); 
$list = array(); 
    foreach($files as $file) 
    { 
     $nb = basename($file) == "index" ? "1" : basename($file); 
     $list[$nb] = '[<a href="'.($pathfiles).''.basename($file).'">'.$nb.'</a>] '; 
    } 
    ksort($list); 
    foreach ($list as $l) 
    { 
     echo $l; 
    } 
?> 
+0

我無法讓這個工作正常。它仍然顯示爲索引,並且不首先顯示。 –

+1

這是因爲它檢查「索引」而不是「index.php」。 – Daniel