例如,我有数组
// In
$arr = [0, 1, 2, 4, 5];
// Out
$cycled_arr = [5, 1, 2, 3, 4, 0];
我这样做了:
$arr = array(0, 1, 2, 3, 4, 5);
// It cycles once
function array_start_push($array){
return array_merge( array(array_pop($array)), $array);
}
// This function must cycle array $times times
function cycleArray($times,&$glArr){
if (!isset($times)){
$result = $glArr;
} else {
for ($loc = 0; $loc <= $times; $loc++) {
$result = array_start_push($glArr);
$glArr = $result;
}
return $result;
}
$hmm = cycleArray($arr);
echo "<pre>";
var_dump($hmm);
echo "</pre>";
不幸的是它加载页面,小心执行!
更新
// In array
$arr = array(0, 1, 2, 3, 4, 5);
// Circle array once
function array_start_push($array){
return array_merge( array(array_pop($array)), $array);
}
// Cycling $times times
function cycleArray($times,&$glArr){
for ($loc = 0; $loc <= $times; $loc++) {
$result = array_start_push($glArr);
$glArr = $result;
}
return $result;
}
$hmm = cycleArray(0,$arr);
echo "<pre>";
var_dump($hmm);
echo "</pre>";
但这会产生一次循环,虽然有一个空!
答案 0 :(得分:0)
它可能会给您一个错误,因为cycleArray($arr);
不存在。它需要2个参数。
检查您的错误日志。
答案 1 :(得分:0)
尝试此功能:
function cycleArray($times, $glArr){
for($i = 0; $i < $times; $i++)
{
//$glArr[] = array_shift($glArr);
array_unshift($glArr, array_pop($glArr));
}
return $glArr;
}
答案 2 :(得分:0)
假设你实际上意味着周期,而不是你的例子显示的是什么:
function cycle(array $arr, $steps) {
return array_merge(array_slice($arr, $steps), array_slice($arr, 0, $steps));
}
var_dump(cycle(array(1, 2, 3, 4, 5), 3));
结果:
array(5) {
[0]=> int(4)
[1]=> int(5)
[2]=> int(1)
[3]=> int(2)
[4]=> int(3)
}