2015-04-11 4 views
0

У меня есть цикл над строками данных mysql в php, и я хочу сравнить значение из одной строки со значением из следующей строки. Я до сих пор сделал такой код:Неподдерживаемый тип операнда при сравнении значений в петле php

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"; 
} 

, но я получаю ошибку о том, что $ строки + 1 производит Фатальная ошибка: неподдерживаемые типы операндов. Как я могу это исправить?

Например, когда у меня есть строки, как это:

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

и я хочу, чтобы сравнить значение2 с Value3, Value4 с value5 и value6 с value7 - как я могу сделать это в цикле? Также - обрабатывает ли php sth как indexarrayoutofbounds exception? Я хочу сделать этот цикл обобщенным и не беспокоиться в будущем, чтобы достигнуть последнего индекса, например, в этом случае, поскольку value8 является последним - я не хочу сравнивать его с нулевым значением (не существующее значение9). Благодаря!

+1

Я думаю, вы должны сначала сохранить все строки в массив и сортировать массив .. –

+0

могли бы вы дать мне подсказку, как это сделать? и другой вопрос - как насчет производительности? быстрее ли сохранять все данные в массив и сортировать массив или сортировать его при выполнении запроса sql (порядок от ...)? – randomuser2

+2

Как бы '$ row + 1' получить следующую строку? – adeneo

ответ

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"; 
} 
+0

Спасибо, это именно то, что я искал :) – randomuser2

Смежные вопросы