2017-08-18 63 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