2011-12-02 33 views
3
$array = array("2011-September_38","2011-June_4","2010-November_9","2011-November_29","2010-December_19"); 

我想這個字符串數組如下分類時,應先進行排序的一年,那麼它應該每月進行排序,如何從PHP中的值數組中排序特定的字符串?

所需的輸出

Array ([0] => 2010-Marh_19 
     [1] => 2010-November_9 
     [2] => 2011-June_4 
     [3] => 2011-September_38 
     [4] => 2011-November_29) 

我試過的東西,任何人都可以綁定我的功能排序年月http://codepad.org/skEiUkTC

+0

順便說一句' 「2010年Marh_19」'是不是你的數組中所以它不能在所需的o utput :) – anubhava

回答

2

試試這個代碼:

<?php 
$array = array("2011-September_38","2011-June_4","2010-November_9","2011-November_29","2010-December_19"); 
function monthCompare($a, $b) { 
    $da = strtotime(strstr($a, '_', true)); 
    $db = strtotime(strstr($b, '_', true)); 
    return $da > $db; 
} 
usort($array, "monthCompare"); 
print_r($array); 
?> 

輸出

Array 
(
    [0] => 2010-November_9 
    [1] => 2010-December_19 
    [2] => 2011-June_4 
    [3] => 2011-September_38 
    [4] => 2011-November_29 
) 
+0

錯誤:http://codepad.org/mUt7jLPG –

+0

@balaji:請看這裏:http://php.net/manual/en/function.strstr.php。由於每本手冊:'5.3.0 \t添加可選參數before_needle.'這意味着你需要有至少PHP版本5.3.0使用的功能的strstr這個額外的參數。如果您沒有php 5.3.0或以上版本,請告訴我,我可以爲您提供替代解決方案。 – anubhava

+0

我當試圖解決這個問題,我建議你看一看它也發現了DateTime類,它可以讓你通過裏面的strtotime周圍的strstr搞亂在一個非常乾淨的方式與時間來工作,而不是能力:-) –

1

所以一個簡單的解決方案是,將每個值轉換爲對象與DateTime::createFromFormat,排序噸下襬,然後再輸出這些值。

之前我看到這個問題,我從來沒有與datetime對象出場,但他們真棒,易於使用,並createFromFormat使得完美感。

$array = array("2011-September_30","2011-June_4","2010-November_9","2011-November_29","2010-December_19"); 

foreach($array as $item) 
{ 
    $timestamps[] = DateTime::createFromFormat('Y-F_d',$item); 
} 

sort($timestamps); 

foreach($timestamps as $timestamp) 
{ 
    $newarray[] = $timestamp->format('Y-F_d'); 
} 

會給你

Array 
(
    [0] => 2010-November_09 
    [1] => 2010-December_19 
    [2] => 2011-June_04 
    [3] => 2011-September_30 
    [4] => 2011-November_29 
) 
+0

根據OP數組元素不是'YYYY-Month_dd'格式的日期。它實際上是'YYYY-Month_ID'其中ID可以是任何數字,如68或95 – anubhava

+0

你必須知道具體的問題,因爲我無法從問題中讀出這樣的。 –

+0

不是你的錯,其實早OP留下評論,表明這裏:http://stackoverflow.com/questions/8351929/how-one-can-sort-an-array-of-values-by-year-and-month -in-php – anubhava

相關問題