undefined offset循环中的PHP错误

时间:2014-09-27 15:58:48

标签: php

它说错误未定义的偏移我不知道是什么原因导致它

我试图改变$ numberarray而不重复数字

继承人的代码

$numberarray = array(1,2,3,4,5,6,7,8,9,10);
for($counter=0;$counter<=9;$counter++)
        {
        $b = $counter - 1;
        $a = $numberarray[$counter];
            $numberarray[$counter] = rand(1,10);
            do
            {
                $numberarray[$counter] = rand(1,10);

                while($b != 0)
                {
                    if($numberarray[$counter] == $numberarray[$b])
                    {

                      $numberarray[$counter] = rand(1,10);
                      $b = $counter - 1;
                      //echo $b;
                    }
                    else
                    {
                      $b--;
                    }
            }

    }while($a == $numberarray[$counter]);
    echo $numberarray[$counter].", ";
}

示例输出$ numberarray = {3,4,5,1,2,7,9,10,8,5}

2 个答案:

答案 0 :(得分:1)

这会更好:

(顺便说一句,你不需要额外的条件,因为while就像一个条件本身一样)

     $numberarray = array(1,2,3,4,5,6,7,8,9,10);
     for($counter=0;$counter<=9;$counter++)
        {
        $b = $counter - 1;
        $a = $numberarray[$counter];
            $numberarray[$counter] = rand(1,10);
            do
            {
              $numberarray[$counter] = rand(1,10);

             while($b >0)
             {
                if($numberarray[$counter] == $numberarray[$b])
                {

                    $numberarray[$counter] = rand(1,10);
                    $b = $counter - 1;
                    //echo $b;
                }
                else
                {
                    $b--;
                }
             }

        }while($a == $numberarray[$counter]);
        echo $numberarray[$counter].", ";
    }

即使没有更多错误,您的代码有时会重复数字,所以我会使用shuffle这样做:

      $numberarray2 = array(1,2,3,4,5,6,7,8,9,10);
      shuffle($numberarray2);
      print_r($numberarray2);

答案 1 :(得分:0)

问题是,在第一个$b等于-1时,这就是你得到错误的原因所以我认为你应该删除if条件并将while语句编辑为while($b!=-1)