注意:未定义的偏移量:27为什么在PHP中生成这些错误?

时间:2014-11-18 05:21:47

标签: php

我使用下面的代码,但是这给了我一个像"的错误:注意:未定义的偏移量:27" 。为什么产生这些错误或这些错误意味着什么?请任何人帮助我。

//Code ... final_display2 is found some array.

for($p=0; $p<sizeof($final_display2); $p=$p+2){
    $b = $p+1;
    $len1 = strlen($final_display2[$p])+strlen($final_display2[$b]); //these line gives error 116
    if($len1 < 3200){
        array_push($final_display,$final_display2[$p].$final_display2[$b]);  //and these one also 118       }else{
        array_push($final_display,$final_display2[$p]);
        array_push($final_display,$final_display2[$b]);
    }
}

ERROR !!

enter image description here

2 个答案:

答案 0 :(得分:2)

您的错误发生在$p==sizeof($final_display2)-1$b==sizeof($final_display2),这将导致Undefined Offset

即。如果sizeof($final_display2)==27$p==26时,则$b==27$final_display2[$b] / $final_display2[27]不存在。

尝试使用if(isset($final_display2[$b])) - &gt;

for($p=0; $p<sizeof($final_display2); $p=$p+2){
    $b = $p+1;

    if(isset($final_display2[$b])){ //only run if $final_display2[$b] exists

    $len1 = strlen($final_display2[$p])+strlen($final_display2[$b]); //these line gives error 116
    if($len1 < 3200){
        array_push($final_display,$final_display2[$p].$final_display2[$b]);  //and these one also 118       }else{
        array_push($final_display,$final_display2[$p]);
        array_push($final_display,$final_display2[$b]);
    }

    }
}

答案 1 :(得分:1)

只需使用$p代替$b,因为您循环播放$final_display2中的所有项目,但是您向$b添加1就是偏移! (同时将for循环更改为$p=$p+2$p++

小例子:

$final_display2中有5个项目,因此循环如下:

for($p=0; $p<5; $p++)
    //So if your at the last element ($p = 4) but your adding 1 to $b and use it you have a offset

编辑:

我认为您正在寻找类似的东西:

    foreach($final_display2 as $k => $v) {

        if( isset($final_display2[$k+1]) ) {
            if($k == 0 || $k % 2 == 0) {
                $len1 = strlen($final_display2[$k])+strlen($final_display2[$k+1]);

                if($len1 < 3200){
                    array_push($final_display,$final_display2[$k].$final_display2[$k+1]); 
                    array_push($final_display,$final_display2[$k]);
                    array_push($final_display,$final_display2[$k+1]);
                }
        }
    }