for循环中的php undefined offset

时间:2016-12-17 18:52:56

标签: php for-loop laravel-5.2

这令我感到困惑,因为退出了一段时间。我想将我的数据与接下来的数据进行比较,以确定何时更改行。

<?php
    $seasons; // laravel eloquent model from controller  
    $i = 0;
    $max = count($seasons);

    for($i; $i<$max; $i++):
        $x = $i+1;
        print_r($seasons[$i]);  // ok 
        print_r($seasons[1]);   // ok 
        print_r($seasons[0+1]); // ok 
        print_r($seasons[$x]);  // undefined  
        print_r($seasons[$i+1]); // undefined 
    endfor;
?>

2 个答案:

答案 0 :(得分:2)

<?php
    $seasons; // laravel eloquent model from controller  
    $i = 0;
    $max = count($seasons);

    for($i; $i<$max; $i++):
        $x = $i+1;
        print_r($seasons[$i]);  // ok 
        print_r($seasons[1]);   // ok 
        print_r($seasons[0+1]); // ok 
        if(isset($seasons[$x])){
            print_r($seasons[$x]);  // undefined  
        }
    endfor;
?>

顺便说一句,$ x和$ i + 1这两行都是一样的。因为$ x = $ i + 1;你又做了$ i + 1。

答案 1 :(得分:0)

我认为$ x可能超过最后一个循环的数组索引限制,所以我进行了检查以解决问题。如果其他人有更好的方法,请告诉我。

$i = 0;
$max = count($seasons);

for($i; $i<$max; $i++):
    $x = $i+1;
    if($x < $max): 
        if($seasons[$i]->month != $seasons[$x]->month)
            // do something 
        endif
    endif;
endfor;