php数组定位的算法 已知固定数组: $arr=array('0','1','2','3','4','5','6','7','8','9','10','11');

给出三个变量,一是方向:顺时针或逆时针;二是数组中的某个起始键值;三是移动位数(1-30)。要求按着三个变量定位数组中的键值。举例1:逆时针,从8开始,移动3位,最终定位... 给出三个变量,一是方向:顺时针或逆时针;二是数组中的某个起始键值;三是移动位数(1-30)。
要求按着三个变量定位数组中的键值。

举例1:
逆时针,从8开始,移动3位,最终定位在10.(起始位开始数)

举例2:
顺时针,从1开始,移动30位,(即1,0.11.10...循环),转几圈后定位到8
展开
 我来答
百度网友d4c6647
2016-08-09 · 超过43用户采纳过TA的回答
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:59.7万
展开全部
<?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];
?>
巨蟹贸易潮牌鞋
2016-08-09 · 超过24用户采纳过TA的回答
知道答主
回答量:65
采纳率:0%
帮助的人:49.6万
展开全部
<?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);

?>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kur116
2016-08-09 · 超过30用户采纳过TA的回答
知道答主
回答量:201
采纳率:50%
帮助的人:72.2万
展开全部
 $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];
}
更多追问追答
追问
谢谢。刚才测了下结果不对
追答
if($direction=='逆时针')
$resault=abs(($step-$star))%$num;
这样对了吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式