PHP数组从1开始排序


PHP Array sort up to set number then from 1

我有一个结构如下的数组,我想用一种奇怪的方式对它排序。

Array(10,9,8,7,6,5,4,3,2,1)

我想根据当前值对它进行排序。如果当前值是7,我想从7到最大的数字排序,然后从1返回到当前值。所以这个数组看起来像这样:

Array(7,8,9,10,1,2,3,4,5,6)

谢谢,安德鲁

这个问题本身似乎很幼稚(在技术意义上),这意味着我有一种感觉,有些细节被省略了。根据你提供的简单说明/示例,这里有一种方法:

$arr = array(10,9,8,7,6,5,4,3,2,1);
sort($arr);
print_r(
    array_merge(
        array_slice($arr, array_search(7, $arr)),
        array_slice($arr, 0, array_search(7, $arr))
    )
);
http://codepad.org/kweQxjGE

给:

Array
(
    [0] => 7
    [1] => 8
    [2] => 9
    [3] => 10
    [4] => 1
    [5] => 2
    [6] => 3
    [7] => 4
    [8] => 5
    [9] => 6
)

我想我要做的是排序和削减数组,然后合并在剩下的。这样的:

function reorder($needle, $haystack) {
    sort($haystack);
    $final = array_merge(array_splice($haystack, array_search($needle, $haystack), (sizeof($haystack)-1)), $haystack);
    return $final;
}
echo '<pre>';
print_r(reorder(7, array(10,9,8,7,6,5,4,3,2,1)));

这将输出:

Array
(
    [0] => 7
    [1] => 8
    [2] => 9
    [3] => 10
    [4] => 1
    [5] => 2
    [6] => 3
    [7] => 4
    [8] => 5
    [9] => 6
)