php数组定位的算法 已知固定数组: $arr=array('0','1','2','3','4...
发布网友
发布时间:2024-10-06 13:08
我来回答
共3个回答
热心网友
时间:2024-11-21 07:08
<?php
$arr=array('0','1','2','3','4','5','6','7','8','9','10','11');
//direction true 表示逆时针 false 表示顺时针
//$pos 起始位置键值(注意是键值)
//$count 走的步数
//$b 数组长度
function change($direction,$pos,$b,$count){
if($count>=-1) {
$count--;
if ($direction) {
if ($pos >= $b) {
return change(false, --$pos, $b,$count);
} else {
return change(true, ++$pos, $b,$count);
}
} else {
if ($pos <= 0) {
return change(true, ++$pos, $b,$count);
} else {
return change(false, --$pos, $b,$count);
}
}
}else{
return $pos;
}
}
$k = change(true,10,count($arr),11);
echo $arr[$k+1];
?>
热心网友
时间:2024-11-21 07:09
$arr=array('0','1','2','3','4','5','6','7','8','9','10','11');
$num=count($arr);
$direction='逆时针';
$step=30;
$star=8;
if($direction=='顺时针')
$resault=($step+$star)%$num;
if($direction=='逆时针')
$resault=abs(($step-$star)%$num);
echo $arr[ $resault-1];
}
热心网友
时间:2024-11-21 07:09
<?php
$arr=array('0','1','2','3','4','5','6','7','8','9','10','11');
$len=count($arr);
// $s为true时候是逆时针,自测ok
function getValue($s,$begin,$n)
{
global $arr,$len;
$index=0;
if($s)
{
$index = $begin+$n%$len-1>=$len?$begin+$n%$len-1-$len:$begin+$n%$len-1;
}else{
$index = $begin-$n%$len+1>=0?$begin-$n%$len+1:$begin-$n%$len+1+$len;
}
return $arr[$index];
}
echo getvalue(true,8,3);
?>