【发布时间】:2011-02-20 05:27:44
【问题描述】:
如何旋转列表
例如。
$arr = array(a,b,c,d,e,f,g);
现在旋转索引是 3 。该列表应从 d 开始轮换。 最终名单应该是
d e f g a b c
谁能为此提出解决方案?我不想使用内置函数,这应该就地完成。
【问题讨论】:
如何旋转列表
例如。
$arr = array(a,b,c,d,e,f,g);
现在旋转索引是 3 。该列表应从 d 开始轮换。 最终名单应该是
d e f g a b c
谁能为此提出解决方案?我不想使用内置函数,这应该就地完成。
【问题讨论】:
$arr = array('a','b','c','d','e','f','g');
$i = 3;
$arr2 = array_merge(array_slice($arr, $i), array_slice($arr, 0, $i));
var_dump($arr2);
另一种解决方案:
$arr = array('a','b','c','d','e','f','g');
$arr2 = array();
$shift = 3;
for ($i = $shift; $i < count($arr); $i++) {
$arr2[] = $arr[$i];
}
for ($i = 0; $i < $shift; $i++) {
$arr2[] = $arr[$i];
}
var_dump($arr2);
没有临时数组的解决方案:
$arr = array('a','b','c','d','e','f','g');
for ($j = 0; $j < 3; $j++) {
$first_letter = $arr[0];
for ($i = 1; $i < count($arr); $i++) {
$arr[$i - 1] = $arr[$i];
}
$arr[count($arr) - 1] = $first_letter;
}
var_dump($arr);
【讨论】: