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++