my array is
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
)
start value = 3
Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 6
[4] => 0
[5] => 1
[6] => 2
)
朋友们,有什么主意吗?
try
$arr = array(0,1,2,3,4,5,6);
foreach($arr as $k=>$v) {
if($v >= 3)
$a[] = $v;
else
$b[] = $v;
}
$c = array_merge($a, $b);
print_r($c); //Array ( [0] => 3 [1] => 4 [2] => 5 [3] => 6 [4] => 0 [5] => 1 [6] => 2 )
第0步(可选):排序数组(堆或其他排序算法)
步骤1:创建一个输出数组
步骤2:循环遍历数组并找到起始点将值和之后的值移动到新数组并将原始数组中的值设置为null
步骤3:循环遍历数组并移动
上的剩余值完成就这样做:对数组调用sort。调用array_search来查找要切片的索引。调用array_slice来切断你想要的部分。调用array_merge将它们按正确的顺序合并。
我不太懂PHP,但快速浏览一下php.net,我想这应该可以。
看到你的数组已经排序和0索引,你可以只是切片和重新组织它:
array_values(array_slice($arr, 3, null, true) + array_slice($arr, 0, 3, true));