【发布时间】:2019-02-23 10:22:01
【问题描述】:
我有两种查看目录和创建树的方法。
public function getFolders($path)
{
$folders = \Storage::disk('public')->directories($path);
return count($folders) > 0 ? $folders : [];
}
public function getTree($path = '')
{
if (count($tree = $this->getFolders($path)) === 0) {
return ['nema'];
}
$arr = [];
foreach ($tree as $value) {
$folder = str_replace($path, '', $value);
if (count(explode('/', $folder)) === 1) {
if (count($this->getFolders($value)) > 0) {
$arr[$folder] = $this->getTree($value . '/');
} else {
$arr[$folder] = $folder;
}
}
}
return $arr;
}
当我dd($arr) 我得到:
array:1 [▼
"files" => array:2 [▼
422 => array:1 [▶]
"shares" => array:2 [▼
"sasic" => array:2 [▼
"daasdasd" => "daasdasd"
"thumbs" => "thumbs"
]
"thumbs" => "thumbs"
]
]
]
但是当我尝试这个时:
$test = 0;
foreach($arr as $folder)
{
if(is_array($folder)){
$test = $test + 1;
}
}
return $test; // returns 0 like there is zero arrays
奇怪的是,如果我在foreach 中使用echo,它不是从上到下,而是以某种混合顺序。
有什么想法吗?
我正在尝试仅从 Laravel 存储公共磁盘中某个文件夹中的目录创建菜单树。
更新:我通过编写这部分代码在循环中添加了$test。没有复制它,这并没有回答我关于为什么这些值不在数组中的问题。
【问题讨论】:
-
你为什么想要一个数组?您应该学会使用迭代器更轻松地做事。
标签: php laravel laravel-5 multidimensional-array laravel-5.7