PHP>返回允许的路径

时间:2017-08-18 04:11:48

标签: php arrays

我已经问过这个问题,但发布时有点令人困惑,因此无法回答。所以我再试一次,如果没问题的话。

原始数组的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'
)

1 个答案:

答案 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要求你澄清规则的原因。