2014-01-06 52 views
0

我有此數組:PHP:從數組解析最早日期

array(2) { 
    [0]=> array(2) { 
     ["url"]=> string(104) "aHR0cDovL3lvdXR1YmUuY29t" 
     ["date"]=> string(19) "2014-01-06 21:44:39" 
    } 

    [1]=> array(2) { 
     ["url"]=> string(28) "aHR0cDovL3d3dy5nb29nbGUuY29t" 
     ["date"]=> string(19) "2014-01-06 14:28:32" 
    } 
} 

我如何可以解析爲$row['date']的最早日期?

+0

嗯,你可以對它進行排序,然後得到的第一個/最後一個元素 – kero

+0

可能重複[如何找到最大和最小的關鍵日期](http://stackoverflow.com/questions/5888925/how通過鍵查找最大值和最小值日期) –

+0

你是從數據庫中獲取這個數組嗎?您可以更改查詢(如果您使用的是MySQL,則使用'ORDER BY date ASC')自動爲您提供排序結果,即最早的日期。 – Esaevian

回答

3

我認爲你可以使用array_mapmin功能做到這一點:

function customFunction($array) { 
    return $array['date']; 
} 
$dateArray= array_map('customFunction', $array); 

所以,你與你的日期數組,之後只是做:

$oldDate = min($dateArray); //here you get the oldest date 
+0

謝謝。這工作完美。是否有可能從$ oldate減去1秒? – jQuerybeast

+0

是的,看這裏:http://stackoverflow.com/questions/12885098/subtract-one-second-from-a-given-time,希望它可以幫助你 – sergio

+0

@jQuerybeast我認爲['DateTime :: sub']( http://php.net/manual/en/datetime.sph.php)應該做的伎倆。 – user555

0

一些簡單的像這樣應該做的

$earliest_date = date_create(); 
foreach($rows as $row) { 
    $date = date_create($row['date']); 
    if($date < $earliest_date) 
     $earliest_date = $date; 
} 
3

要查找數組中的最小日期,請嘗試此代碼

$minDate = min(array_map(function($item) { return $item['date']; }, $array)); 
+0

我怎樣才能讓這個減1秒? – jQuerybeast

+0

回聲日期(「Y-m-d H:i:s」,strtotime($ minDate) - 1) – tuffkid

+0

即負1年 – jQuerybeast