PHP按任意顺序排序

前端之家收集整理的这篇文章主要介绍了PHP按任意顺序排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How can I sort arrays and data in PHP?9个
我需要PHP中的一个函数来根据任意顺序对单词列表进行排序.

列表中不以预定义顺序排列的任何单词都应按字母顺序排在列表末尾.

以下是我的第一次尝试,既不优雅也不高效.你能建议一个更好的方法来实现这个目标吗?

谢谢

public static function sortWords(&$inputArray){
    $order=array("Banana","Orange","Apple","Kiwi");
    sort($inputArray);
    for($i=0;$i<count($inputArray));$i++){
        $ac = $inputArray[$i];
        $position = array_search($ac,$order);
        if($position !== false && $i != $position){
            $temp=$inputArray[$position];
            $inputArray[$position]=$inputArray[$i];
            $inputArray[$i]=$temp;
        }
    }
}
PHP提供了 usort()和 @L_502_2@函数,允许您编写自己的排序例程.在这两个中,你会想要usort().

这两个函数都希望您编写一个独立函数,它将输入数组的两个元素作为输入,并返回它们应该排序的顺序.然后,usort()函数运行自己的排序算法,调用您的函数以根据需要经常建立排序顺序,直到它对整个数组进行排序.

所以你要写这样的东西….

function mycompare($a,$b) {
    if ($a == $b) {return 0;}
    $order=array("Banana","Kiwi");
    $position = array_search($a,$order);
    $position2 = array_search($b,$order);

    //if both are in the $order,then sort according to their order in $order...
    if ($position2!==false && $position!==false) {return ($position < $position2) ? -1 : 1;}
    //if only one is in $order,then sort to put the one in $order first...
    if($position!==false) {return -1;}
    if($position2!==false) {return 1;}

    //if neither in $order,then a simple alphabetic sort...
    return ($a < $b) ? -1 : 1;
}

…然后只需调用usort($inputarray,’mycompare’);对它们进行排序

原文链接:https://www.f2er.com/php/135341.html

猜你在找的PHP相关文章