php自定义数组排序

时间:2012-04-23 15:58:38

标签: php arrays

我有以下数组:

$myarray = Array (
[1] => stdClass Object ( 
    [ID] => 1 
    [current] => 
)

[2] => stdClass Object ( 
    [ID] => 2 
    [current] => 1 
)

[3] => stdClass Object ( 
    [ID] => 3 
    [current] =>
)

[4] => stdClass Object ( 
    [ID] => 4 
    [current] =>
)

[5] => stdClass Object ( 
    [ID] => 5 
    [current] =>
)
)

我需要对其进行排序,将值当前作为第一个,然后将所有最初的项目放在当前的项目之后,以及最初之前将是结果数组中的最后一个。

所以新数组看起来像这样:

Array (
[1] => stdClass Object ( 
    [ID] => 2 
    [current] => 1 
)

[2] => stdClass Object ( 
    [ID] => 3 
    [current] =>
)

[3] => stdClass Object ( 
    [ID] => 4 
    [current] =>
)

[4] => stdClass Object ( 
    [ID] => 5 
    [current] =>
)

[5] => stdClass Object ( 
    [ID] => 1 
    [current] => 
)
)

非常重要

3 个答案:

答案 0 :(得分:4)

您可能会对usort()函数感兴趣。

usort($input,function($a,$b) {return $a['current']-$b['current'];});

答案 1 :(得分:1)

您可以处理usort()功能。

您基本上设置了自定义顺序功能,并将其作为第二个参数(第一个是要排序的数组)传递给usort()。

在回调函数中,您可以定义数组的排序方式。例如

usort($array_to_sort, function($a,$b) {
    return $a['current']-$b['current'];
});

答案 2 :(得分:0)

如果你想保持元素的相同顺序,不要对数组进行排序,而是将其旋转直到当前元素为止,例如

while($myarray[0]['current']<>1) {
  array_push($myarray, array_shift($myarray));
}