PHP - 更改字符排序顺序,例如“a”> “{”=真

时间:2017-02-12 13:05:44

标签: php sorting

我正在尝试自定义PHP的usort函数来更改字符排序顺序。

目前,只有“*”符号字符等于具有小于字母字符的值,例如“a”,即"*" < "a" = TRUE。其他符号(例如“{”的值大于字母,例如“a”,即"{" < "a" = FALSE

我想排序,因此值“{*}”位于排序数组的顶部,就像值为“*”一样。这是我目前正在使用的函数,用于按对象的多个属性对对象数组进行排序。 [署名:这是usort Will Shaver'sdocs代码的修改版本。]

function osort($array, $properties) {
    //Cast to an array and specify ascending order for the sort if the properties aren't already
    if (!is_array($properties)) $properties = [$properties => true];

    //Run the usort, using an anonymous function / closures
    usort($array, function($a, $b) use ($properties) {
        //Loop through each specified object property to sort by
        foreach ($properties as $property => $ascending) {
            //If they are the same, continue to the next property
            if ($a -> $property != $b -> $property) {
                //Ascending order search for match
                if ($ascending) {
                    //if a's property is greater than b, return 1, otherwise -1
                    return $a -> $property > $b -> $property ? 1 : -1;
                }
                //Descending order search for match
                else {
                    //if b's property is greater than a's, return 1, otherwise -1
                    return $b -> $property > $a -> $property ? 1 : -1;
                }
            }
        }
        //Default return value (no match found)
        return -1;
    });

    //Return the sorted array
    return $array;
}

1 个答案:

答案 0 :(得分:0)

[ { "ID" : "some-guid-string" "Name" : "MyOrganization", "Members" : { "Team1" : [ "MemberName" : "John", "MemberName" : "Jess", "MemberName" : "Joe", ], "Team2" : [ "MemberName" : "Jake", "MemberName" : "Jeff" ] } } ] 如何按照您定义的顺序对某些字符进行优先排序,然后使用常规usort呢?

这样的事情:

strcmp