$files = array();
$directories = array();
foreach($this->file_system as $key => $file_object_info)
{
// make sure this is the requested path and exclude it from appearaning twice
if(strpos($key, $path) === 0 && $key !== $path)
{
$relative_path = mb_substr($key, mb_strlen($path));
// this is a file
if(strpos($relative_path, '/') === FALSE)
{
$files[$key] = $file_object_info;
}
// this is a directory
elseif(!substr($relative_path, strpos($relative_path, '/') + 1))
{
$directories[$key] = $file_object_info;
}
}
}
Я думаю, что это самое лучшее, что я могу оптимизировать. Хотя это не так плохо, как я.