3 回答

TA贡献1878条经验 获得超4个赞
您可以使用 foreach
$start = 3;
$r1 = $r2 = [];
foreach($a as $k => $v){
($k >= $start) ? ($r1[$k]=$v) : ($r2[$k]=$v);
}
$r = $r1 + $r2;
print_r($r);
工作示例:- https://3v4l.org/1KDoR

TA贡献1842条经验 获得超21个赞
使用uksort,查看演示
$startOn = 3;
uksort($array,function($a,$b)use($startOn){return ($a + 7 - $startOn) % 7 - ($b + 7 - $startOn) % 7;});
print_r($array);

TA贡献1853条经验 获得超6个赞
这是工作解决方案,
$k = array_search(3, array_keys($arr));
$arr = array_slice($arr,$k,null,true) + array_slice($arr,0,$k,true);
print_r($arr);
演示。
输出:-
Array
(
[3] => Wed
[4] => Thu
[5] => Fri
[6] => Sat
[0] => Sun
[1] => Mon
[2] => Tue
)
array_search — 在数组中搜索给定的值,如果成功则返回第一个对应的键
array_slice — 提取数组的一个切片
笔记:
默认情况下, array_slice()将重新排序和重置整数数组索引。可以通过将 preserve_keys 设置为 TRUE来更改此行为。无论此参数如何,始终保留字符串键。
- 3 回答
- 0 关注
- 158 浏览
添加回答
举报