반응형
오늘은 usort에 대해 알아보자.
mysql에선 [order by]절이 있어서 자유자재로 정렬(asc 정순, desc 역순)이 가능하지만
php배열에 그런 간단한 기능이 없다.
방법이야 많지만 그걸 익히기가 쉽지 않은데, usort를 이용한 방법이 그나마 괜찮다.
<?
function print_array($arr) {
foreach($arr as $a) {
echo $a["name"] . " (나이 : ".$a["age"].")<BR>";
}
}
$array_before = $array_after = $array_after_2 = array(
array("name"=>"철수" , "age"=>21),
array("name"=>"영희" , "age"=>20),
array("name"=>"용재" , "age"=>11),
array("name"=>"길동" , "age"=>38),
array("name"=>"동탁" , "age"=>9),
array("name"=>"규소" , "age"=>51),
array("name"=>"경락" , "age"=>175),
array("name"=>"극락" , "age"=>307),
);
usort($array_after, function ($item1, $item2) {
if ($item1['age'] == $item2['age']) return 0; #같을 경우 통과
return $item1['age'] < $item2['age'] ? 1 : -1; #삼항식을 통해 역순 배열
});
usort($array_after_2, function ($item1, $item2) {
if ($item1['age'] == $item2['age']) return 0; #같을 경우 통과
return $item1['age'] < $item2['age'] ? -1 : 1; #삼항식을 통해 정순 배열
});
?>
<pre>
※결과도출※
1) 정렬전
<?=print_array($array_before)?>
2) 정렬후 (역순)
<?=print_array($array_after)?>
3) 정렬후 (정순)
<?=print_array($array_after_2)?>
</pre>
반응형
'PHP' 카테고리의 다른 글
[Binance API] Invalid API-key, IP, or permissions for action, request ip (code=-2015) 해결했다! (0) | 2021.08.26 |
---|---|
[Android] 유튜브 API이용해서 영상재생 구현해보자! (0) | 2021.08.10 |
strtotime을 응용하기 (경과시간 체크) (0) | 2021.08.03 |
function 밖의 변수를 끌어와서 사용할 수 있는 방법(global 선언) (0) | 2021.07.20 |
[MYSQL] BIGINT UNSIGNED value is out of range in 문제 해결 방법? (0) | 2021.07.13 |