2014-03-28 38 views
1

走了,我有一個簡單的排列,如:開關陣列在PHP

array(0 => '', 1 => '2014-03-28 08:17:11', 2 => '2014-03-28 08:26:11', 
     3 => '2014-03-28 08:32:05', 4 => '2014-03-28 08:49:00', 
     5 => '2014-03-28 09:24:24') 

,我想改用數組在最後的位置有空指數和充滿在23先前的指數,但同日:59:59

有沒有可能做這個開關的功能?

+1

從這裏開始:h ttp://www.php.net/manual/en/function.array-shift.php –

+0

沒有常見的PHP函數會這樣做。正如@LorenzoMarcon所說,首先擺脫0,然後解析最後的索引來獲取日期,並「推」新的日期。 – aurbano

+1

您是如何在_23:59:59_到達的,還是總是標準的? –

回答

0

使用array_filter過濾空元素,然後從數組中獲取一個元素explode,然後取第一個元素並將其追加到最大時間。

<?php 
$dt=array(0 => '', 1 => '2014-03-28 08:17:11', 2 => '2014-03-28 08:26:11',3 => '2014-03-28 08:32:05', 4 => '2014-03-28 08:49:00', 5 => '2014-03-28 09:24:24'); 
$dt=array_filter($dt); 
array_push($dt,$v=explode(' ',$dt[1])[0].' 23:59:59'); 
print_r($dt); 

OUTPUT :

Array 
(
    [1] => 2014-03-28 08:17:11 
    [2] => 2014-03-28 08:26:11 
    [3] => 2014-03-28 08:32:05 
    [4] => 2014-03-28 08:49:00 
    [5] => 2014-03-28 09:24:24 
    [6] => 2014-03-28 23:59:59 
) 
1

感謝您的答覆,但最後我跟着這個方法:

$date = new DateTime($intervaldates[sizeof($intervaldates)-1]); 
$intervaldates[0] = $date->setTime(23, 59, 59)->format('Y-m-d H:i:s'); 
$dates = array_map('strtotime', $intervaldates); 
sort($dates); 

所以這樣我可以肯定獲得最後日期間隔時間設置爲23:59:59 ...

+0

將strtotime()添加到$ date-> setTime(....) - > format()... – Luigino