我有以下数组:
$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] =>
)
)
非常重要
答案 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));
}