[ php ] 다차원 배열을 원하는 필드로 정렬하고 싶을 때
페이지 정보
작성자 웹지기 댓글 1건 조회 4,787회 작성일 18-10-04 11:35본문
데이터베이스 테이블을 모방 한 배열이 있다고 가정합니다.
각 배열 요소는 행을 나타내며 각 행 내에서 필드 이름과 값을 포함하는 다른 배열입니다.
[code]
Array
(
[0] => Array
(
[name] => 'Sony TV'
[price] => 600.00
)
[1] => Array
(
[name] => 'LG TV'
[price] => 350.00
)
[2] => Array
(
[name] => 'Samsung TV'
[price] => 425.00
)
}
[/code]
외부 배열 요소에 따라 정렬하는 것
여기서 원하는 필드는 price
[code]
Array
(
[0] => Array
(
[name] => 'LG TV'
[price] => 350.00
)
[1] => Array
(
[name] => 'Samsung TV'
[price] => 425.00
)
[2] => Array
(
[name] => 'Sony TV'
[price] => 600.00
)
}
[/code]
관련링크
댓글목록
웹지기님의 댓글
웹지기 작성일
usort() 사용
[code]
function sort($a, $b)
{
if($a['정렬원하는 필드'] == $b['정렬원하는 필드']) return 0;
return ($a['정렬원하는 필드'] > $b['정렬원하는 필드']) ? 1 : -1; //숫자의 경우는 되겠지만 문자가 될런지 음....
}
[/code]
코드를 재사용하려면 클래스를 만들어서 사용하는게 좋다.
[code]
class FieldSorter
{
public $field;
function __construct($field)
{
$this -> field = $field;
}
function cmp($a, $b)
{
if($a[$this -> field] == $b[$this -> field]) return 0;
return($a[$this -> field] > $b[$this -> field] ? 1 : -1;
}
}
$sorter = new FieldSorter('정렬원하는 필드');
usort($array, array($sorter, "cmp"));
[/code]
이런식으로 원하는 필드로 정렬을 할 수 있다.
외부 배열의 키를 보존할 때는 usort() 대신 uasort() 를 사용할 수 있다.