如何根据PHP的名称对php中的数组进行排序?

时间:2015-10-27 09:51:38

标签: php

我有一个像这样的数组

Array
(
    [bms] => Array
        (
            [0] => 123456_bms_for__on__(10-06-2015_18-57).pdf
        )

    [fr] => Array
        (
            [0] => 123456_fr_on_09-21-2015_(09-22-2015_11-46).pdf
        )

    [pcm] => Array
        (
            [0] => 123456_pcm_for_vignesh_on__(10-12-2015_12-30).pdf
        )

    [fds] => Array
        (
            [0] => 123456_fds_ext_for__on__(08-25-2015_10-23).pdf
        )

    [dr] => Array
        (
            [0] => 123456_dr_for__on___(10-23-2015_13-06).pdf
        )

)

我想订购这个数组(bms,dr,fds,pcm,fr)命令

Array
(
    [bms] => Array
        (
            [0] => 123456_bms_for__on__(10-06-2015_18-57).pdf
        )
    [dr] => Array
        (
            [0] => 123456_dr_for__on___(10-23-2015_13-06).pdf
        )
    [fds] => Array
        (
            [0] => 123456_fds_ext_for__on__(08-25-2015_10-23).pdf
        )
    [pcm] => Array
        (
            [0] => 123456_pcm_for_vignesh_on__(10-12-2015_12-30).pdf
        )

    [fr] => Array
        (
            [0] => 123456_fr_on_09-21-2015_(09-22-2015_11-46).pdf
        )
)

请帮我整理数组,帮助我按新的顺序实现数组 如何根据键值排列数组

2 个答案:

答案 0 :(得分:2)

您可以使用 uksort PHP功能。

  

uksort()将使用用户提供的比较函数对数组的键进行排序。如果要排序的数组需要按照一些非平凡的标准进行排序,则应使用此函数。

$sortOrder = array("bms", "dr", "fds", "pcm", "fr");

uksort($yourArray, function($a, $b) use ($sortOrder) {
    return array_search($a, $sortOrder) - array_search($b, $sortOrder); 
});

工作IDEOneeval.in演示。

答案 1 :(得分:2)

您可以像{/ p>一样使用uksort

$pos = ['bms', 'dr', 'fds', 'pcm', 'fr'];
uksort($arr, function ($a, $b) use ($pos) {
    foreach ($pos as $value) {
        if ($value == $a) {
            return 0;
            break;
        }
        if ($value == $b) {
            return 1;
            break;
        }
    }
});

Demo