Я хочу отсортировать следующий массив $json_a
(который был расшифрован из json-файла), сначала match_formatted_date
, а затем match_localteam_name
.Обозначение для сортировки многомерного массива с usort
array(4) {
["APIRequestsRemaining"]=> int(920)
["matches"]=> array(3) {
[0]=> array(3) {
["match_id"]=> string(7) "1999477"
["match_formatted_date"]=> string(6) "16.05.2015"
["match_localteam_name"]=> string(7) "Burnley" }
[1]=> array(3) {
["match_id"]=> string(7) "1999478"
["match_formatted_date"]=> string(10) "16.05.2015"
["match_localteam_name"]=> string(3) "QPR"
}
[2]=> array(3) {
["match_id"]=> string(7) "1999479"
["match_formatted_date"]=> string(10) "16.05.2015"
["match_localteam_name"]=> string(7) "Arsenal"
}
}
["Action"]=> string(5) "today"
}
Я попытался вызвать функцию usort следующим образом:
function cmp($a, $b) {
// sort by ['match_formatted_date']
$retval = strnatcmp(substr($b['match_formatted_date'],0,10), substr($a['match_formatted_date'],0,10));
// if identical, sort by ['match_localteam_name']
if(!$retval) $retval = strnatcmp($a['match_localteam_name'], $b['match_localteam_name']);
return $retval;
}
$matches = $json_a['matches'];
usort($matches, 'cmp');
Однако, как представляется, не будет сортировки записей. Я читал как можно больше о usort, но я подозреваю, что проблема заключается в формате нотации в моей функции. Я также пробовал $a['matches']['match_date']
, но без радости.
Отметьте как ответ, поскольку он оба отметил проблему и предложил предложение для улучшения. – MrDave