2015-04-17 2 views
0

Формат Даты:PHP - Формат даты массива и Сравнить

$nonzero_task_date = array_map(function($values) 
      { 
       return date('d-m-Y', strtotime($values)); 
      }, $nonzero_task_date); 

      $date_arr = array_map(function($value) 
      { 
       return date('d-m-Y', strtotime($value)); 
      }, $date_arr); 

Дата массива:

print_r($date_arr); 

    Array 
(
    [0] => 13-04-2015 
    [1] => 14-04-2015 
    [2] => 15-04-2015 
    [3] => 16-04-2015 
    [4] => 17-04-2015 
    [5] => 18-04-2015 
    [6] => 19-04-2015 
) 

print_r($nonzero_task_date); 

    Array 
(
    [0] => 16-04-2015 
    [1] => 14-04-2015 
    [2] => 13-04-2015 
    [3] => 16-04-2015 
    [4] => 17-04-2015 
) 

foreach ($date_arr as $row) { 
    //$format_date = new DateTime($row); 
    //$date_format = $format_date->format('d-m-Y'); 

    //compare dates 
    if((in_array($row, $nonzero_task_date))){ 
    $sql = 'update query'; 

    } 
} 

Приведенный выше код форматирует дату, но терпит неудачу, когда даты по сравнению с использованием in_array()?

Также он замедляет процесс sql и требует времени из-за количества записей в БД, если дата отформатирована в цикле foreach.

+1

Ели из всех, вы уверены, что этот процесс медленный из-за этого кода? Похоже, вы пытаетесь преждевременно оптимизировать его без надлежащего профилирования. – Alik

+0

Да, это медленно, когда я форматирую дату внутри foreach. Форматирование его перед циклом поможет удалить ненужное форматирование даты внутри цикла – Slimshadddyyy

+0

Итак, вы надеетесь найти формат способа для массива дат без цикла по массиву? –

ответ

2

Если я правильно понял, вы могли бы использовать array_map для запуска функции над каждым элементом массива перед ее прокруткой.

$date_arr = array_map(function($value) 
{ 
    return date('d-m-Y', strtotime($value)); 
}, $date_arr); 
+0

Jordan Doyle: используется ли код перед циклом foreach? и как он отличается от '$ format_date = new DateTime ($ row); $ date_format = $ format_date-> format ('d-m-Y'); '? – Slimshadddyyy

+0

@Jordan Что относительно array_walk()? Может ли он использоваться в этом случае? –

+0

@Slimshadddyyy код будет работать до цикла foreach, и в этом случае разница между 'strtotime' и' DateTime' действительно невелика, кроме одного меньшего объекта для очистки. –

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