2015-02-25 3 views
0

Я перебираю запрос, содержащий значение, которое является целым числом и дате. Я хочу сравнить каждую строку цикла и если запись с той же датой (NOT TIME) уже существует, она должна удалить предыдущую запись/объект в массиве. Как я могу достичь этого?Сравнение даты с предыдущей датой в цикле

foreach ($balanceQuery as $row) 
{ 

    $value = $row->balance; 


    $datetime = strtotime($row->post_date) * 1000; 
    $data[] = "[$datetime, $value]"; 
} 
+0

для достижения этой вашей необходимости сравнивать каждую строку с предыдущими и удалить его, если найдено –

+0

Вы должны делать это в операторе SQL запроса. – Rafael

+0

Мне было рекомендовано сделать это в этом заявлении из-за сложности моего запроса –

ответ

0

позвольте мне попробовать.

$tempDates = array(); 
$tempDelete = array(); 
foreach ($balanceQuery as $key=>$row){ 
    $value = $row->balance; 
    $datetime = date("Y-m-d", strtotime($row->post_date)); // make format just date 
    if(in_array($datetime, $tempDates)){ // if date is exist in $tempDates 
     $keys = array_keys($tempDates, $datetime); // get the keys 
     if(!empty($keys)){ 
      $tempDelete[] = $keys[count($keys)-1]; // put the last exist date 
     } 
    } 
    $tempDates[$key] = $datetime; // store to array with $key array 
} 

// now looping for delete 

foreach($tempDelete as $del){ 
    unset($balanceQuery[$del]); 
} 
Смежные вопросы