我正试图根据字段end_date ASC 对数组进行排序
这是我的数组(包含更多的数据,有时是相同的日期)
0 (Array, 5 elements)
type (String, 5 characters ) short
description (String, 8 characters ) textext
enjoyed (Boolean) FALSE
start_date (String, 24 characters ) 2013-12-03T01:00:00.000Z
end_date (String, 24 characters ) 2014-01-26T01:00:00.000Z
1 (Array, 5 elements)
type (String, 5 characters ) short
description (String, 4 characters ) text
enjoyed (Boolean) FALSE
start_date (String, 24 characters ) 2013-12-19T01:00:00.000Z
end_date (String, 24 characters ) 2014-06-25T02:00:00.000Z
2 (Array, 5 elements)
type (String, 5 characters ) short
description (String, 17 characters ) black en Platinum
enjoyed (Boolean) FALSE
start_date (String, 24 characters ) 2013-12-13T01:00:00.000Z
end_date (String, 24 characters ) 2014-01-31T01:00:00.000Z
这是我的尝试:
function cmp($a, $b)
{
global $array;
return strcmp($array[$a]['end_date'], $array[$b]['end_date']);
}
uksort($array, 'cmp');
但结果是
1
1
1
1
哪里出了问题?按照日期格式?
有人能为我指明正确的方向或提供帮助吗?
我用这个函数按他的一列对每个多维数组进行排序:
function sortArrayBy($array , $column_name,$sort=SORT_DESC){
foreach ($array as $key => $row) {
$column[$key] = $row[$column_name];
}
array_multisort($column, $sort, $array);
return $array;
}
这样称呼它:
<?php sortArrayBy($yourArray,'end_date',SORT_ASC) ; ?>
试试这个,
<?php
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$a = array(3, 2, 5, 6, 1);
usort($a, "cmp");
foreach ($a as $key => $value) {
echo "$key: $value'n";
}
?>
参考编号:http://www.php.net/manual/en/function.usort.php