-1

这是我的示例数组:

$arrayy[0]=48.72;
$arrayy[1]=21.32;
$arrayy[2]=48.62;
$arrayy[3]=21.31;
$arrayy[4]=48.62;
$arrayy[5]=21.31;

这个功能

function writeDouble($array){
        for($curr = 0; $curr<count($array)-1; $curr++){
            echo $array[$curr]." - ";
            echo $array[$curr+1]."<br>";
            $curr++;
    }
}

应该写一对 (0-1 , 2-3 , 4-5) - 输出如下:

48.72 - 21.32
48.62 - 21.31
48.62 - 21.31

我做错了什么,为什么会出现错误?

Notice: Undefined offset: 6 in C:\xampp\htdocs\xampp\lg\functions.php on line 466

或者你能定义一个更好的函数来结对吗?想不出来了。。。谢谢

4

3 回答 3

4

因为在最后一次迭代中,echo $array[$curr+1]."<br>";您将寻找$array[count($array)]未定义的程序!

于 2012-09-16T17:15:38.243 回答
0
  1. 您正在使用$array[$curr + 1],但您正在从0to迭代$curr - 1。如果isset数组中有奇数个值,则需要一个。

  2. 您增加了 2 次(一次在您的范围内,一次在您for的范围内for)。

代码解决方案:

$arrayy[0]=48.72;
$arrayy[1]=21.32;
$arrayy[2]=48.62;
$arrayy[3]=21.31;
$arrayy[4]=48.62;
$arrayy[5]=21.31;    

function writeDouble($array) {
        for ($curr = 0; $curr < (count($array) - 1); $curr += 2) {
            echo $array[$curr] . " - ";
            if (isset($array[$curr + 1])) {
              echo $array[$curr + 1];
            }
            echo "<br>";
    }
}

writeDouble($arrayy);

输出:

48.72 - 21.32
48.62 - 21.31
48.62 - 21.31

没有更多的警告。

于 2012-09-16T17:24:06.873 回答
0

请注意,您将 $curr 增加两次:

for($curr = 0; $curr<count($array)-1; $curr++){

$curr++

This is the reason for going out of range in your loop

于 2012-09-16T17:24:44.257 回答