我有以下数组:
$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] =>
)
)
我需要对其进行排序,将值current作为第一个,然后是当前originally之后的所有项目,而最初before的项目将是最后一个。结果数组。
因此新数组将如下所示:
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] =>
)
)
您可以处理 usort() 函数。
您基本上设置了自定义排序函数,并将其作为第二个参数传递给 usort() (第一个参数是要排序的数组)。
在回调函数内,您可以定义数组的排序方式。例如
usort($array_to_sort, function($a,$b) {
return $a['current']-$b['current'];
});
如果您想保持元素的相同顺序,请不要对数组进行排序,而是旋转它直到当前元素是第一个,例如
while($myarray[0]['current']<>1) {
array_push($myarray, array_shift($myarray));
}