$file, 'is_file' => is_file($path.'/'.$file), 'meta' => [ 'updated_at' => \Carbon\Carbon::parse($meta['mtime'])->format('d.m.Y h:m:i') ] ]; if ($result['is_file']) { $result['meta']['size'] = $this->formatBytes($meta['size']); $files[] = $result; } else { $directories[] = $result; } } // sorting by filename usort($directories, [$this, 'sortByFilename']); usort($files, [$this, 'sortByFilename']); // adding directories foreach($directories as $directory) { $results[] = $directory; } // adding files foreach($files as $file) { $results[] = $file; } return $results; } /** * sorting by filename, function for usort * */ private function sortByFilename($a, $b) { if (strtolower($a['filename']) < strtolower($b['filename'])) { return 0; } else { return 1; } } /** * * @param [type] $size [description] * @param integer $precision [description] * @return [type] [description] */ private function formatBytes($size, $precision = 1) { if ($size === 0) { return '0 bytes'; } $base = log($size, 1024); $suffixes = array('bytes', 'kB', 'MB', 'G', 'T'); return round(pow(1024, $base - floor($base)), $precision).' '.$suffixes[floor($base)]; } }