Обычно я просто сохраняю самый последний идентификатор в переменной и проверяю его в верхней части цикла while. В псевдокоде, как это:
$old_row_id = -1; // any value that can't legitimately appear
while ($row = fetch_array($result)) {
if ($old_row_id == $row['id']) {
// logic to follow if IDs are the same
} else {
// logic to follow if IDs are different
}
// logic to follow in either case, if any
$old_row_id = $row['id']; // update variable for the next run through
}
Если вам действительно нужно изменить поведение для конкретной строки в соответствии с тем, что происходит в строке next , я рекомендую вам на самом деле повлиять на это изменение в после прогона цикл, когда вы проверяете новый идентификатор строки против старого.
В качестве альтернативы, вы можете циклически просматривать набор результатов дважды: первый раз помещая строки в двумерный массив, чтобы можно было легко ссылаться на строки разностей по номерам. Затем, во второй раз, вы фактически делаете то, что хотели в первую очередь, и можете ссылаться на «следующий ряд», используя [$i + 1]
вместо [$i]
. (Конечно, тогда вы должны быть осторожны с последней строкой, потому что тогда смещение [$i + 1]
не работает.)