我使用下面的代码,但是这给了我一个像"的错误:注意:未定义的偏移量: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]);
}
}
答案 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]);
}
}
}