为什么在使用简单数组函数时会得到未定义的索引

时间:2012-09-16 17:12:01

标签: php arrays function for-loop cycle

这是我的示例数组:

$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

或者你能定义一个更好的功能来制作情侣吗?我再也想不起了......谢谢

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

  1. 您正在使用$array[$curr + 1],但您正在从0进行迭代,再到$curr - 1。如果数组中有奇数个值,则需要isset

  2. 您的增量为2次(for增加一次,for范围内增加一次。

  3. 代码解决方案:

    $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
    

    不再警告。

答案 2 :(得分:0)

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

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

$curr++

这是你的循环超出范围的原因