具有键/值对的自定义排序数组

时间:2010-10-25 12:59:03

标签: php

以下数组到达:

Array
(
    [66-507cddcd16d9786abafccfa78b19acf8] => XL
    [64-507cddcd16d9786abafccfa78b19acf8] => medium
    [65-507cddcd16d9786abafccfa78b19acf8] => large
    [63-507cddcd16d9786abafccfa78b19acf8] => small
)

如何以升序大小顺序对数组的值进行排序,以保持键/值关系?数组值可以是以下部分或全部

Small
XXL
Medium
Large 
XL

4 个答案:

答案 0 :(得分:1)

如果您的排序需求比之前建议的asortksort更复杂,那么请编写一个插入uasort的函数。

答案 1 :(得分:1)

您需要使用uasort

function sizeSorter($a, $b) {
    // customize as needed
    $comp = array_flip(array('xxxs', 'xxs', 'xs', 's', 'small', 'm', 'medium', 'l', 'large', 'xl', 'xxl', 'xxxl'));
    return $comp[strtolower($a)] - $comp[strtolower($b)];
}

uasort($array, 'sizeSorter');

实例:

  

http://codepad.org/vxcN29sO

答案 2 :(得分:0)

如果您想按字母顺序对值进行排序,那就是asort的用途。

答案 3 :(得分:0)

你可以使用asort。我从php网站上复制了这个

asort - 对数组进行排序并维护索引关联

http://php.net/manual/en/function.asort.php