2017-08-18 83 views
-2

我已經問過這個問題,但它發表了一些令人困惑,因此proberbly沒有回答。所以我再試一個額外的例子,如果沒關係。PHP>返回允許的路徑

有原始陣列與URL的像一個實施例1中和2 原始數組中的每個元素的每個最後文件夾是某些用戶具有查看右側的文件夾。

實施例1

Array(
'a' 
'a/b/c' 
'a/b/c/d/e' 
'a/y' 
'b/z' 
'b/z/q 
) 

我想獲得的兩個陣列的像:

Array['short'](
'a/c/e' 
'a/y' 
'z/q' 
) 

Array['full'](
'a/b/c/d/e' 
'a/y' 
'b/z/q' 
) 

實施例2

Array(
'projects/projectA/books' 
'projects/projectA/books/cooking/book1' 
'projects/projectA/walls/wall' 
'projects/projectX/walls/wall' 
'projects/projectZ/' 
'projects/projectZ/Wood/Cheese/Bacon' 
) 

我想獲得的兩數組類似於:

Array['short'](
'books/book1' 
'wall' 
'wall' 
'projectZ/Bacon' 
) 

Array['full'](
'projects/projectA/books/cooking/book1' 
'projects/projectA/walls/wall' 
'projects/projectX/walls/wall' 
'projects/projectZ/Wood/Cheese/Bacon' 
) 
+1

爲了將來的參考,澄清問題不明確的方法是編輯問題,而不是在其他地方重新提問。 –

+1

而且......我不明白你想要問什麼。 「完整」路徑與「短」路徑有何區別? –

+0

可以將短路徑視爲用戶允許的可見面包。 完整的路徑將被用於編碼超鏈接的那些麪包。 – medicalbird

回答

0

@ADyson問一個很好的問題。你已經告訴我們沒有規定應該刪除什麼的規則。如果我認爲您只是要刪除每個數組項的前兩個元素,那麼你可以...

$original_array = Array(
'projects/projectA/books', 
'projects/projectA/books/cooking/book1', 
'projects/projectA/walls/wall', 
'projects/projectX/walls/wall', 
'projects/projectZ/', 
'projects/projectZ/Wood/Cheese/Bacon' 
); 

$new_array = array(); 
$new_array['full'] = array(); 
$new_array['short'] = array(); 

foreach($original_array as $full_url){ 
    $tmp = explode("/",$full_url); 
    array_shift($tmp); 
    array_shift($tmp); 
    if(count($tmp)>1){ 
     array_push($new_array['full'], $full_url); 
     array_push($new_array['short'], implode("/",$tmp)); 
    } 
} 

print_r($new_array); 

不過,我正在做關於你正在試圖做的多麼巨大的假設以及你爲什麼要這樣做。因此,我可能會完全錯誤。這就是爲什麼@ADyson要求你澄清規則。

+0

感謝您的回覆。這不是我正在尋找的。我在@ADyson上評論過。 – medicalbird