PHP에서 연관 배열 정렬 [duplicate]
PHPPHP에서 연관 배열 정렬 [duplicate]
이 형식으로 배열이 있습니다.
Array
(
[0] => Array
(
[text] => tests
[language] =>
[advertiserCompetitionScale] => 5
[avgSearchVolume] => 7480000
[lastMonthSearchVolume] => 9140000
)
[1] => Array
(
[text] => personality tests
[language] =>
[advertiserCompetitionScale] => 5
[avgSearchVolume] => 165000
[lastMonthSearchVolume] => 201000
)
[2] => Array
(
[text] => online tests
[language] =>
[advertiserCompetitionScale] => 5
[avgSearchVolume] => 246000
[lastMonthSearchVolume] => 301000
)
)
해당 형식의 배열을 avgSearchVolume 필드의 내림차순으로 정렬하려면 어떻게해야합니까? 이 기능이 내장되어 있습니까?
해결법
-
==============================
1.usort를 사용하고 자신의 함수를 제공하여 주문을합니다.
usort를 사용하고 자신의 함수를 제공하여 주문을합니다.
function cmp($a, $b) { return $b['avgSearchVolume'] - $a['avgSearchVolume']; } usort($array, "cmp");
-
==============================
2.PHP 5.3까지는 각 키에 새로운 함수를 만들지 않고 하위 키를 기준으로 정렬하는 데 가장 좋은 함수입니다.
PHP 5.3까지는 각 키에 새로운 함수를 만들지 않고 하위 키를 기준으로 정렬하는 데 가장 좋은 함수입니다.
function sortBySubkey(&$array, $subkey, $sortType = SORT_ASC) { foreach ($array as $subarray) { $keys[] = $subarray[$subkey]; } array_multisort($keys, $sortType, $array); } sortBySubkey($arr, 'avgSearchVolume');
PHP 5.3을 사용하면 지금과 같은 함수 호출을 만들 수 있습니다.
function getSortVariable($sortType = SORT_ASC) { switch($sortType) { case SORT_ASC: return function ($a, $b) use ($subkey) { return strcmp($a[$subkey], $b[$subkey]); }; } } function sortBySubkey(&$array, $subkey, $sortType = SORT_ASC) { $sortFunction = getSortVariable($sortType); usort($array, $sortFunction($subkey)); }
-
==============================
3.당신은 usort ()와 함께 커스텀 콜백 함수를 사용해야 할 것이다.
당신은 usort ()와 함께 커스텀 콜백 함수를 사용해야 할 것이다.
function cmp($a, $b) { if ($a['avgSearchVolume'] == $b['avgSearchVolume']) { return 0; } return ($a['avgSearchVolume'] > $b['avgSearchVolume']) ? -1 : 1; } usort($array, 'cmp');
-
==============================
4.이것은 도움이 될 수 있습니다 : 배열 배열 정렬하기
이것은 도움이 될 수 있습니다 : 배열 배열 정렬하기
-
==============================
5.
function querySort ($first_Array,$second_Array) { return strcasecmp($first_Array['name'],$second_Array['name']); } echo '<pre>'; usort($main, 'querySort'); print_r($main); die;
-
==============================
6.다른 해결책은 다음과 같습니다. 정렬을위한 여러 옵션을 추가 할 수 있습니다 (코드의 주석 부분 참조).
다른 해결책은 다음과 같습니다. 정렬을위한 여러 옵션을 추가 할 수 있습니다 (코드의 주석 부분 참조).
<?php $arr=Array( Array("text" => "tests","language" =>"","advertiserCompetitionScale" => 5,"avgSearchVolume" => 7480000,"lastMonthSearchVolume" => 9140000), Array("text" => "personality tests","language" =>"","advertiserCompetitionScale" => 5,"avgSearchVolume" => 165000,"lastMonthSearchVolume"=>201000), Array("text" => "online tests","language" =>"","advertiserCompetitionScale" => 5,"avgSearchVolume" => 246000,"lastMonthSearchVolume" =>301000) ); $sort = array(); foreach($arr as $k=>$v) { $sort['avgSearchVolume'][$k] = $v['avgSearchVolume']; //$sort['text'][$k] = $v['text']; } array_multisort($sort['avgSearchVolume'], SORT_DESC, $arr); //array_multisort($sort['avgSearchVolume'], SORT_DESC, $sort['text'], SORT_ASC,$arr); echo "<pre>"; print_r($arr); ?>
REF : http://php.net/manual/en/function.array-multisort.php
from https://stackoverflow.com/questions/777597/sorting-an-associative-array-in-php by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP로 PDF 파일보기 (0) | 2018.09.12 |
---|---|
PHP에서는 디렉토리 탐색을 방지하지만 경로는 허용합니다. (0) | 2018.09.12 |
주어진 날짜와 오늘 비교 (0) | 2018.09.12 |
PHP에서 @ 연산자의 오류를 표시하지 않습니다. [닫힘] (0) | 2018.09.12 |
url 매개 변수로 배열 전달하기 (0) | 2018.09.12 |