Как отсортировать этот массив в числовом порядке с помощью php - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь отсортировать список файлов по их имени.

Это мой массив:

Array
(
    [5] => 
    [4] => Array
        (
            [id] => 194
            [filename] => 1.2 Organogram company BV.pptx
            [name] => undefined
            [path] => /home/website/public_html/fileupload/company/organisatie/
            [cat_id] => 297
            [error] => 0
        )

    [1] => Array
        (
            [id] => 195
            [filename] => 1.2 VOL VCA R. company 13-12-2024.docx
            [name] => undefined
            [path] => /home/website/public_html/fileupload/company/organisatie/
            [cat_id] => 297
            [error] => 0
        )

    [0] => Array
        (
            [id] => 196
            [filename] => 1.2 MVK- diploma 2016 Piet Schipaanboord.jpg
            [name] => undefined
            [path] => /home/website/public_html/fileupload/company/organisatie/
            [cat_id] => 297
            [error] => 0
        )

    [3] => Array
        (
            [id] => 200
            [filename] => 1.1 Beleidsverklaring 20-09-2018.docx
            [name] => undefined
            [path] => /home/website/public_html/fileupload/company/organisatie/
            [cat_id] => 297
            [error] => 0
        )

    [2] => Array
        (
            [id] => 201
            [filename] => 1.2 Functieomschrijving VGM-functionaris.docx
            [name] => undefined
            [path] => /home/website/public_html/fileupload/company/organisatie/
            [cat_id] => 297
            [error] => 0
        )

)

Как вы можете видеть, теперь он сортируется следующим образом:

1.2
1.2
1.2
1.1
1.2

Как я могу отсортировать это правильно?Примерно так:

1.1
1.2
1.2
1.2
1.2

Я пробовал asort вот так:

$getfiles = "SELECT * FROM files1 WHERE cat_id = 20";
$getfilescon = $conn->query($getfiles);
while($getfiles[] = $getfilescon->fetch_assoc());
asort($getfiles, $getfiles['filename']);

Или вот так:

asort($getfiles['filename']);

Или вот так:

asort($getfiles[]['filename']);

Но ничто не дает желаемого результата.

1 Ответ

0 голосов
/ 25 сентября 2018

Вам нужно использовать usort и создать свой собственный приоритет сортировки.
Это должно выглядеть примерно так.

function customSort($a, $b) {
    if ($a['filename'] == $b['filename']) {
        return 0;
    }
    return ($a['filename'] < $b['filename']) ? -1 : 1;
}

usort($array, "customSort");

Или, если вы используете PHP 7 +

usort($array, function (array $a, array $b) {
    return $a['filename'] <=> $b['filename'];
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...