在比较php循环中的值时,不支持的操作数类型

时间:2015-04-11 12:06:45

标签: php mysql loops

我在php中循环遍历mysql数据行,我希望将一行中的值与下一行中的值进行比较。到目前为止我做了这样的代码:

if ($result->num_rows > 0) {
     // output data of each row
     while($row = $result->fetch_assoc()) {
        $current_row = $row;
        $next_row = $row+1;
        if ($current_row["begin_date"] > $next_row["end_date"])
        {
           (...)
        }
     }
} else {
     echo "0 results";
}

但是我得到一个错误,说$ row + 1会产生致命错误:不支持的操作数类型。我该如何解决?

例如,当我有这样的行时:

     begin_dates | end_dates
row1:    value1  |  value2
row2:    value3  |  value4
row3:    value5  |  value6
row4:    value7  |  value8

我希望将value2与value3进行比较,将value4与value5进行比较,将value6与value7进行比较 - 如何在循环中进行此操作?另外 - php处理类似indexarrayoutofbounds异常吗?我想让这个循环变得通用,并且在将来不要担心到达最后一个索引,例如在那种情况下,因为value8是最后一个 - 我不想将它与空值进行比较(不是现有价值9)。谢谢!

1 个答案:

答案 0 :(得分:2)

$row+1没有为您提供下一行

if ($result->num_rows > 0) {

    $arr = array();

    while($row = $result->fetch_assoc()) {     
       $arr[] = $row;
    }

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

        if ($current_row["begin_date"] > $next_row["end_date"]) {
           (...)
        }
     }
} else {
     echo "0 results";
}