Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么在使用简单数组函数时会得到未定义的索引_Php_Arrays_Function_For Loop_Cycle - Fatal编程技术网

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

Php 为什么在使用简单数组函数时会得到未定义的索引,php,arrays,function,for-loop,cycle,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]." - ";

这是我的示例阵列:

$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++;
    }
}
我做错了什么,为什么我会出错

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

或者你能定义一个更好的功能来让夫妻结合吗?我不能再思考了。。。谢谢

因为在
行的最后一次迭代中,echo$array[$curr+1]。“
您将查找未定义资源的
$array[count($array)]

  • 您正在使用
    $array[$curr+1]
    ,但您正在从
    0
    迭代到
    $curr-1
    。如果数组中的值为奇数,则需要一个
    isset

  • 您正在递增2次(一次在<代码>的范围内,一次在<代码>的范围内,一次在<代码>的范围内)

  • 代码解决方案:

    $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);
    

    不再发出警告。

    请注意,您正在将$curr增加两倍:

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

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

    我从循环计数($array)的大小中减去了“1”(-1)。@user1666761-但在上一次迭代中,$curr将是count($array)-1,这意味着$curr+1将比count($array)-1大一个,你有什么建议吗?删除-1后,错误仍然保留。迭代直到计数($array)-2是。他们总是平等的。。。嗯,好的。但是为什么我的服务器上有这个偏移量呢?您的代码可以根据以下内容正常工作:
    functions.php
    中第466行的代码是什么?因为我需要执行以下操作。所以增量必须在2之前。哦,我明白了。更好的是,这并不是未定义索引的原因。制作一个var_dump($array)并检查数组是否按照您在问题中的说明构建。好的,可以。。作为我的例子。因为警告来自不同的功能:-)我今天有点心烦意乱,谢谢
    48.72 - 21.32
    48.62 - 21.31
    48.62 - 21.31
    
    for($curr = 0; $curr<count($array)-1; $curr++){
    
    $curr++