2013-07-18 30 views
1

我已經構建了我的第一個文件管理器,並且我需要一些導航部分的幫助。下面是這部分的代碼:使用array_slice()轉到上一個文件夾

# CONFIGURATION: Folder 
$path = (empty($_GET['p']) ? '../../../' : '../../../'.$_GET['p']); 

# CONTROL: The folder exists 
if(file_exists($path)) { 
    $results = scandir($path); 
} 



# CONTROL: Root 
if(!empty($_GET['p'])) { 
    $navigation_loop = explode('/', $_GET['p']); 

    if(count($navigation_loop) > 1) { 
     $sliced = array_slice($navigation_loop, 0, -1); 
    } 


    # LOOP 
    foreach($navigation_loop AS $navigation) { 
     echo '<a href="javascript:void(0)" class="filemanager-link" id="path-navigation" data="'; 

     # CONTROL: There's more than one 
     if(count($navigation_loop) > 1) { 
      echo implode('/', $sliced); 

     # CONTROL: There's not more than one 
     } else { 
      echo $navigation; 
     } 

     echo '">'; 
      echo $navigation; 
     echo '</a>'; 
    } 
} 

$_GET['p']包含完整路徑到當前文件夾,即some/path/to/show/you。文件名永遠不會顯示在這GET

現在遇到了問題:當我在some/path並點擊some時,網站將我帶到文件夾some。但如果我在some/path/to並點擊some,網站只需要我到some/path

我知道問題是什麼(array_slice($navigation_loop, 0, -1)),但我不知道如何解決此問題。如果我在some/path,那麼array_slice()函數將爲-1。但是當我在some/path/to時,如果我想轉到some-1,那麼應該是-2,如果我想轉到some/path

我該如何解決這個問題?

回答

0

試試這個你主要的if語句:

if(!empty($_GET['p'])) { 
    $navigation_loop = explode('/', $_GET['p']); 

    # LOOP 
    for ($level=0; $level < count($navigation_loop); $level++) { 
     echo '<a href="javascript:void(0)" class="filemanager-link" id="path-navigation" data="'; 

     # CONTROL: There's more than one 
     $sliced = array_slice($navigation_loop, 0, ($level+1)); 
     if(count($navigation_loop) > 1) { 
      echo implode('/', $sliced); 
     # CONTROL: There's not more than one 
     } else { 
      echo $sliced; 
     } 

     echo '">'; 
      echo $navigation_loop[$level]; 
     echo '</a>'; 
    } 
} 

應該更像你想要什麼。

+0

工程就像一個魅力!非常感謝! – Erik

0

難道你不能計算抵消?

$navigation_loop = explode('/', $_GET['p']); 
$offset = -1 * (count($navigation_loop) - 1); 
if(count($navigation_loop) > 1) { 
    $sliced = array_slice($navigation_loop, 0, $offset); 
} 

我不知道我完全理解了這個問題,但是好像它應該爲切片調用獲得正確的參數。

+0

你對我的理解很好,但如果我點擊'to',我會去'some'。如果我點擊「路徑」,我會再次用你的代碼去「some」。你應該去你點擊的文件夾:) – Erik

相關問題