我在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)。谢谢!
答案 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";
}