일 것입니다. usort
함수를 사용할 수 있습니다. 콜백 함수를 사용하여 배열을 정렬합니다. 해당 배열의 요소 :이 함수는 사용자가 제공 비교 함수를 사용 그 값에 의해 배열을 정렬한다
bool usort (array &$array , callback $cmp_function )
. 당신이 원하는 배열이 필요 으로 분류 할 수 정렬 할 경우 기능이 $element['points']['total']
별로 비교하기 위해 정의 된 경우 일부 비 사소한 기준, 당신은 이 트릭을 할해야이 기능을
를 사용해야합니다. 편집
: 여기 그리고는 usort
과 동일 uasort
를 사용하여 예이지만, ryanday 지적처럼, 배열의 키를 유지합니다 :
이
먼저,이 배열을 선언하자 :
$a = array(
array(
'firstname' => 'Jnic',
'lastname' => 'Fortin',
'points' => array(
'id' => 20453,
'f' => 31,
'r' => 7,
'total' => 82,
),
),
array(
'firstname' => 'Kris',
'lastname' => 'Anders',
'points' => array(
'id' => 20309,
'f' => 0,
'r' => 1,
'total' => 56,
),
),
array(
'firstname' => 'Em',
'lastname' => 'Zajo',
'points' => array(
'id' => 20339,
'f' => 8,
'r' => 3,
'total' => 254,
),
),
);
그리고, 비교 함수 :
function my_compare($a, $b) {
if ($a['points']['total'] > $b['points']['total']) {
return -1;
} else if ($a['points']['total'] < $b['points']['total']) {
return 1;
}
return 0;
}
,174
uasort($a, 'my_compare');
var_dump($a);
을 그리고 total
내림차순으로 정렬 된 배열을 얻을 :
그리고 마지막으로, 우리는 그것을 사용하는 당신의 답변을
array
2 =>
array
'firstname' => string 'Em' (length=2)
'lastname' => string 'Zajo' (length=4)
'points' =>
array
'id' => int 20339
'f' => int 8
'r' => int 3
'total' => int 254
0 =>
array
'firstname' => string 'Jnic' (length=4)
'lastname' => string 'Fortin' (length=6)
'points' =>
array
'id' => int 20453
'f' => int 31
'r' => int 7
'total' => int 82
1 =>
array
'firstname' => string 'Kris' (length=4)
'lastname' => string 'Anders' (length=6)
'points' =>
array
'id' => int 20309
'f' => int 0
'r' => int 1
'total' => int 56
ryanday> 감사합니다!