按日期列对二维数组进行排序[重复]

问题描述 投票:0回答:1

我有这个数组

$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"
)
);

我想根据“开始”日期升序缩短日期。所以我用这个 usort 来做到这一点

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

如何正确做?

php arrays sorting date multidimensional-array
1个回答
2
投票

我认为你定义'sortFunction'超出了你调用usort($array, "sortFunction");的范围

您必须在调用 usort($array, "sortFunction"); 的同一方法或作用域中定义和实现 '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");
© www.soinside.com 2019 - 2024. All rights reserved.