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));}非常好的一行代码。谢谢。非常好的一行。谢谢。非常好的一行。谢谢。非常好的一行。谢谢