일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Coding
- C#
- programmers
- tls
- IValueConverter
- ListView
- git
- Visual Studio
- File
- commit
- windows
- windows10
- chashtag
- .net
- csharp
- logging
- nullable
- mysql
- Binding
- dotNET
- Process
- 코딩테스트
- Github
- Microsoft
- WPF
- log
- algorithm
- string
- coding-test
- convert
Archives
- Today
- Total
CHashtag
[PHP] Array의 내의 Object의 특정 요소로 정렬하기 본문
반응형
안녕하세요.
오늘은 Object가 담겨있는 Array를 Object의 특정 요소로 정렬하는 방법에 대해 알아보도록 하겠습니다.
Array 데이터는 아래와 같다고 가정합니다.
Array
(
[0] => stdClass Object
(
[name] => Henry
[age] => 41
)
[1] => stdClass Object
(
[name] => John
[age] => 22
)
[2] => stdClass Object
(
[name] => Kevin
[age] => 38
)
)
이런 Array의 경우 일반적인 sort로는 정렬이 불가능합니다. 왜냐하면 정렬 기준이 명확하지 않기 때문이죠.
그렇기 때문에 정렬 기준을 정의해주어야 합니다.
아래는 나이순으로 정렬하는 방법입니다.
usort($temp_array, function($a, $b) {return strcmp($a->age, $b->age);});
이번에는 함수로 분리하도록 하겠습니다.
usort($group_storage_list, "sortFunction");
public function sortFunction($a, $b)
{
return strcmp($a->age, $b->age);
}
주의할점은 usort의 두번째 인자에 string으로 넘겨줘야 한다는 것입니다.
이번에는 클래스 함수로 만들어보겠습니다.
class someClass {
public function main() {
usort($group_storage_list, array($this, "sortFunction"));
}
public function sortFunction($a, $b) {
return strcmp($a->age, $b->age);
}
}
이런 경우에는 array로 넘깁니다.
또한 $this는 string으로 넘기지 않습니다.
이번에는 static function 으로 변경해 보겠습니다.
class someClass {
public function main() {
usort($group_storage_list, array("someClass", "sortFunction"));
}
public static function sortFunction($a, $b) {
return strcmp($a->age, $b->age);
}
}
이번에는 class와 함수를 순서대로 string으로 넘겨주면 됩니다.
오늘도 평화로운 PHP..
감사합니다.
도움이 되었길 바랍니다.
반응형