php自定义数组排序仅适用于4个第一个元素

时间:2015-01-29 16:06:29

标签: php arrays

我需要对一个数组进行排序,前四个元素将手动定义,其余按字母顺序定义。我怎样才能做到这一点?

    $array = array('navigation' => array('label' => 'nav'), 
                   'sponsors' => array('label' => 'spo'),
                   'points' => array('label' => 'poi'),
                   'direction' => array('label' => 'dir'),
                   'time' => array('label' => 'tim'),
                   'statistics' => array('label' => 'sta'),
                   'height' => array('label' => 'hei'),
                   'opacity' => array('label' => 'opa'),
                   'saturation' => array('label' => 'sat'),
                   'size' => array('label' => 'size'),
                   'attribute' => array('label' => 'att')
                   );

前四个元素应为大小,不透明度,时间,分数,其余元素应按字母顺序排列。

修改

评论要求显示我的尝试。我尝试用uasort函数对它进行排序,但它根本不起作用。我也不知道为什么。

    $order = array('size', 'opacity', 'time', 'points');

    uasort($array, function ($a, $b) use ($order) {
        $pos_a = array_search($a, $order);
        $pos_b = array_search($b, $order);
        return $pos_a - $pos_b;
    });

1 个答案:

答案 0 :(得分:2)

您可以从阵列中删除这四个项目(如果需要,可以制作副本)并按键排序:

$temp = array();

foreach (array('size', 'opacity', 'time', 'points') as $key) {
    $temp[$key] = $array[$key];
    unset($array[$key]);
}

ksort($array);

$result = array_merge($temp, $array);