我的PHP代码中未定义的偏移量1 - 如何避免它?

时间:2015-10-11 12:21:16

标签: php mysql

我有一个返回的SQL查询:

if($q3->rowCount()>0)
{
    $check3 = $q3->fetchAll(PDO::FETCH_ASSOC);
    $arr = array();
    foreach ($check3 as $row) {
        $arr[] = $row;
    }

    $firstRow = $arr[0]; 

        for($i=0; $i < count($arr); $i++) {
            $current_row = $arr[$i];
            $next_row    = $arr[$i+1];

            if (($next_row["begin_date"] - $current_row["end_date"]) >= $duration){
                $found_timestamp_for_new_event = $current_row["end_date"];
                break;
            }

        }

    $last_element = ($arr[count($arr) - 1]['end_date']);    
    if($end_timestamp - $last_element >= $duration){
        $found_timestamp_for_new_event = $last_element;

    }
 }  

在我的PHP代码中,我迭代结果,并且我正在检查是否可以在现有结果之间插入另一个事件 - 基本上我检查一个结尾之间的时间差异事件和上一个事件的开始时间长于上一个事件的持续时间 - 如果是,那么我将其结束日期保存为新创建事件的开始日期。

我在创建sql SELECT查询后立即创建了一个php查询:

Notice Undefined offset: 1 in ...

但是,当我运行它时,我收到了警告:

$next_row    = $arr[$i+1];

并且警告在行$arr[$i+1]中。 我认为这是因为在某些情况下查询不再返回任何事件,因此它没有看到$(document).ready(function() { $(".nav a").on("click", function () { $(".nav").find(".active").removeClass("active"); $(this).parent().addClass("active"); }); });

我该如何解决?

1 个答案:

答案 0 :(得分:1)

当您到达数组的最后一个元素时,错误会引发。使用IF语句检查是否确实存在其他元素。

if ( $i < count($arr)-1 ) {
    // THERE IS AT LEAST ANOTHER ROW AFTER THIS
    $next_row = $arr[$i+1];
} else {
    // THIS IS THE LAST ROW, DO SOMETHING ELSE HERE
}