PHP从某个键开始对数组键重新排序,循环返回

PHP从某个键开始对数组键重新排序,循环返回,php,arrays,sorting,Php,Arrays,Sorting,所以我有一个数组: $array = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); 显然,它们的索引为0-6 我想输入一个特定的键索引,然后对数组重新排序,从该键开始,然后以相同的顺序遍历其余的键,如下所示: print_r(somefunction(3, $array)); 它将打印以下内容: array ( '0'=>'Wed', '1'=>'Thu', '2'=>'Fri', '3'

所以我有一个数组:

$array = array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
显然,它们的索引为0-6

我想输入一个特定的键索引,然后对数组重新排序,从该键开始,然后以相同的顺序遍历其余的键,如下所示:

print_r(somefunction(3, $array));
它将打印以下内容:

array
(
    '0'=>'Wed',
    '1'=>'Thu',
    '2'=>'Fri',
    '3'=>'Sat',
    '4'=>'Sun',
    '5'=>'Mon',
    '6'=>'Tue'
)
是否有一个核心功能可以做到这一点,或者是否有人有一个快速的解决方案

更新

这是我的最后一个功能,比我上面的问题略大,它利用了Abracadver的答案:

public static function ordered_weekdays($format = 'abr')
{
    $array = $format == 'full' ? array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday') : array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
    return array_merge(array_splice($array, get_option('start_of_week'), count($array)-1), $array);
}

因为它是一个很好的单行程序,所以我不需要将它作为一个单独的函数。

尝试类似于这些行的东西

function reorder($x,$y)
{
    $c = count($y);
    for ($i=0; $i<$c; $i++)
    {
        $newArray[$i] = $y[$x];
        $x++;
        if ($x > $c) $x = 0;
    }
    return($newArray);
}
函数重新排序($x,$y)
{
$c=计数($y);
对于($i=0;$i$c)$x=0;
}
返回($newArray);
}

试着用这些方法

function reorder($x,$y)
{
    $c = count($y);
    for ($i=0; $i<$c; $i++)
    {
        $newArray[$i] = $y[$x];
        $x++;
        if ($x > $c) $x = 0;
    }
    return($newArray);
}
函数重新排序($x,$y)
{
$c=计数($y);
对于($i=0;$i$c)$x=0;
}
返回($newArray);
}

试着用这些方法

function reorder($x,$y)
{
    $c = count($y);
    for ($i=0; $i<$c; $i++)
    {
        $newArray[$i] = $y[$x];
        $x++;
        if ($x > $c) $x = 0;
    }
    return($newArray);
}
函数重新排序($x,$y)
{
$c=计数($y);
对于($i=0;$i$c)$x=0;
}
返回($newArray);
}

试着用这些方法

function reorder($x,$y)
{
    $c = count($y);
    for ($i=0; $i<$c; $i++)
    {
        $newArray[$i] = $y[$x];
        $x++;
        if ($x > $c) $x = 0;
    }
    return($newArray);
}
函数重新排序($x,$y)
{
$c=计数($y);
对于($i=0;$i$c)$x=0;
}
返回($newArray);
}
函数somefunction($n,数组$a){
$x=数组×片($a,0,$n);
$y=数组\ U片($a,$n);
返回数组\u merge($y,$x);
}
//忘记这一点:不必要的循环。。。
函数somefunction($n,数组$a){
对于($i=0;$i<$n;$i++){
数组推送($a,数组移位($a));
}
返回$a;
}
函数somefunction($n,数组$a){
$x=数组×片($a,0,$n);
$y=数组\ U片($a,$n);
返回数组\u merge($y,$x);
}
//忘记这一点:不必要的循环。。。
函数somefunction($n,数组$a){
对于($i=0;$i<$n;$i++){
数组推送($a,数组移位($a));
}
返回$a;
}
函数somefunction($n,数组$a){
$x=数组×片($a,0,$n);
$y=数组\ U片($a,$n);
返回数组\u merge($y,$x);
}
//忘记这一点:不必要的循环。。。
函数somefunction($n,数组$a){
对于($i=0;$i<$n;$i++){
数组推送($a,数组移位($a));
}
返回$a;
}
函数somefunction($n,数组$a){
$x=数组×片($a,0,$n);
$y=数组\ U片($a,$n);
返回数组\u merge($y,$x);
}
//忘记这一点:不必要的循环。。。
函数somefunction($n,数组$a){
对于($i=0;$i<$n;$i++){
数组推送($a,数组移位($a));
}
返回$a;
}

我以前做过这件事,觉得比这简单,但现在我的大脑告诉我:

$index = 3;
$array = array_merge(array_splice($array, $index, count($array)-1), $array);

我以前做过,觉得比这简单,但现在我的大脑说:

$index = 3;
$array = array_merge(array_splice($array, $index, count($array)-1), $array);

我以前做过,觉得比这简单,但现在我的大脑说:

$index = 3;
$array = array_merge(array_splice($array, $index, count($array)-1), $array);

我以前做过,觉得比这简单,但现在我的大脑说:

$index = 3;
$array = array_merge(array_splice($array, $index, count($array)-1), $array);


在索引号上拆分数组,然后将第一部分添加到第二部分。我的问题不应该被否决,不管是谁做的。谢谢,用户1954544。这是一个明显的解决方案,我没有想到。在索引编号上拆分数组,然后将第一部分添加到第二部分。我的问题不应该被否决,不管是谁做的。谢谢,用户1954544。这是一个明显的解决方案,我没有想到。在索引编号上拆分数组,然后将第一部分添加到第二部分。我的问题不应该被否决,不管是谁做的。谢谢,用户1954544。这是一个明显的解决方案,我没有想到。在索引编号上拆分数组,然后将第一部分添加到第二部分。我的问题不应该被否决,不管是谁做的。谢谢,用户1954544。这是一个明显的解决方案,我没有想到。编辑得不错。我喜欢原版,但最好不要循环。现在试试新的。我把你的缩短了一点:function somefunction($n,array$a){return array_merge(array_slice($a,$n),array_slice($a,0,$n));}编辑得不错。我喜欢原版,但最好不要循环。现在试试新的。我把你的缩短了一点:function somefunction($n,array$a){return array_merge(array_slice($a,$n),array_slice($a,0,$n));}编辑得不错。我喜欢原版,但最好不要循环。现在试试新的。我把你的缩短了一点:function somefunction($n,array$a){return array_merge(array_slice($a,$n),array_slice($a,0,$n));}编辑得不错。我喜欢原版,但最好不要循环。现在试试新的。我把你的缩短了一点:function somefunction($n,array$a){return array_merge(array_slice($a,$n),array_slice($a,0,$n));}非常好的一行代码。谢谢。非常好的一行。谢谢。非常好的一行。谢谢。非常好的一行。谢谢