[ php ] 다차원 배열을 원하는 필드로 정렬하고 싶을 때 > php

본문 바로가기

사이트 내 전체검색

php

[ php ] 다차원 배열을 원하는 필드로 정렬하고 싶을 때

작성일 18-10-04 11:35

페이지 정보

작성자 웹지기 조회 3,843회 댓글 1건

본문

데이터베이스 테이블을 모방 한 배열이 있다고 가정합니다. 

각 배열 요소는 행을 나타내며 각 행 내에서 필드 이름과 값을 포함하는 다른 배열입니다.

[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]


추천0

비추천 0

댓글목록

웹지기님의 댓글

profile_image 웹지기
작성일

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() 를 사용할 수 있다.

전체 82건 2 페이지

이미지 목록

게시물 검색
Copyright © 즐거운 코딩 생활 ( funyphp ). All rights reserved.
PC 버전으로 보기