我有一个api,它返回前端请求的图像路径。但在Linux服务器中,它需要自然排序。我想在yol
键中自然排序值。
$klein->respond('GET', '/getPaths/[:name]', function($request,$response) {
$path00 = "../manga/" . $request->name;
function getAll($path00)
{
$dirs = [];
foreach (new DirectoryIterator($path00) as $item) {
if (!$item->isDir() || $item->isDot()) {
continue;
}
$gedo = [];
$path01 = $path00 . "/" . $item;
$path02 = substr($path01, 3);
$yol = new DirectoryIterator($path01);
foreach ($yol as $esya) {
if (!$esya->isDot() && $esya->getFilename() !== ".DS_Store") {
$gedo[] = $path02 . "/" . $esya->getFilename();
}
}
$dirs[] = array('klasor' => $item->getFilename(), 'yol' => $gedo);
}
return $dirs; // Output its in the image.
};
$data = getAll($path00);
$response->json($data);
});
输出:
答案 0 :(得分:1)
看看PHP sort functions。 natsort应该适合您的情况。
只需将以下行更改为:
natsort($gedo);
$dirs[] = array('klasor' => $item->getFilename(), 'yol' => $gedo);
也是一个简单的代码示例:
$input = [
'abc' => [
'item1',
'item4',
'item2'
]
];
$output = natsort($input['abc']); // $output will be true
// but $input is now sorted and looking like:
// 'abc' => [
// 'item1',
// 'item2',
// 'item4'
// ]