2014-01-06 90 views
0

排序日期我有這樣的陣列內部陣列

$array = array(
array(
"start" => "2013-12-22", 
    "end" => "2013-12-25" 
), 
array(
"start" => "2013-12-30", 
    "end" => "2013-12-31" 
), 
array(
"start" => "2013-11-28", 
    "end" => "2013-11-30" 
), 
array(
"start" => "2014-07-12", 
    "end" => "2014-07-18" 
), 
array(
"start" => "2014-08-01", 
    "end" => "2014-08-07" 
) 
); 

我想賣空基於「開始」日升的日期。所以我用這種做法來做到這一點

function sortFunction($a, $b) { 
      return strtotime($a['start']) - strtotime($b['start']); 
     } 

     usort($array, "sortFunction"); 

print_r($array); 

但我得到以下消息,並且日期沒有排序。

PHP Warning: usort() expects parameter 2 to be a valid callback, function 'sortFunction' not found or invalid function name 

如何正確地做到這一點?

感謝你們

+0

可能重複http://stackoverflow.com/questions/ 2477496/php-sort-array-by-subarray-value) –

+0

不應該是'「start」=>「2013-12-22」'等等?你可以閱讀更多關於PHP [數組](http://php.net/arrays),然後重寫你的問題。 – 2014-01-06 05:47:40

+0

你是否在另一個功能或類別中執行此操作? sortFunction應該是一個全局函數。 – DavidLin

回答

1

我認爲ü定義 'sortFunction' 在哪裏你叫usort($陣列 「sortFunction」)的範圍;你需要在調用usort的相同方法或範圍中定義和實現'sortFunction'($ array,「sortFunction」);

替代方案:

使用此:

usort($array,function ($a, $b) { 
     return strtotime($a['start']) - strtotime($b['start']); 
    }); 

而不是

function sortFunction($a, $b) { 
     return strtotime($a['start']) - strtotime($b['start']); 
    } 

    usort($array, "sortFunction"); 
[PHP排序數組通過子數組值](的
+0

謝謝,它解決了我的情況 –