我已经问过这个问题,但发布时有点令人困惑,因此无法回答。所以我再试一次,如果没问题的话。
原始数组的url类似于示例1和2中的url。 原始数组中每个元素的每个 last 文件夹都是某个用户有权查看的文件夹。
示例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'
)
答案 0 :(得分: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要求你澄清规则的原因。