php - 我的 php 代码中 undefined offset 1 - 如何避免它?

标签 php mysql

我有一个 sql 查询返回:

start_time of the event  |  end time of the event   |   duration of the event

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

我创建了一个 php 查询,该查询在执行 sql SELECT 查询后立即发生:

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;

    }
 }  

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

Notice Undefined offset: 1 in ...

并且警告位于 $next_row = $arr[$i+1]; 行中。 我认为发生这种情况是因为在某些情况下查询不再返回事件,因此它看不到 $arr[$i+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
}

关于php - 我的 php 代码中 undefined offset 1 - 如何避免它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33064884/

相关文章:

php - mysql-php查询列表建表

php - 如何在Google Compute Engine中使用适用于PHP的Google App Engine SDK

MySQL命令行表列宽采用utf8

mysql - 在 Rails 项目上运行 ruby​​ 时遇到问题

php - 使用 PDO 准备语句将空变量插入 MySQL

php readFile() 和移动 safari

php setcookie 与 Zend_Http_Cookie

MySQL——基于if null和join的高级查询

php - 不返回填充数组的计数

mysql - 如何使用MySQL选择2条子记录?