wr_1 여분필드에 "|" 기준으로 값을 받은 경우 리스트정렬
본문
보통, wr_1 여분필드 자체로만 정렬할 땐 아래처럼 하잖아요.
<?php echo subject_sort_link('wr_1', $qstr2, 1) ?>wr_1 기준으로 정렬</a>
wr_1을 | 기준으로 쪼개서 wr_1[1] 기준으로 정렬하려면 어떻게 해야 할까요?
(예) wr_1값이 이런식으로 저장된 경우, abc순으로 정렬 기준 잡기
1|a
2|b
3}c
...
답변 5
$wr_1_arr=explode("|",$wr_1);
하시면 됩니다.
정렬을 하실려면 wr_1을 분리해서 wr_1 | wr_2 이런식으로 나눠서 저장을 하시는게 편하실껍니다.
자리수가 정해져 있다면 잘라서라도 하겠지만 임의에 데이터를 분리해서 정렬할때는 효용성이 떨어질듯 합니다.
wr_1을 | 기준으로 쪼개서 wr_1[1]이 정렬 기준이면
둘째 값인데
substring_index()함수를 쓰면 가능하겠지만
실용적이지는 않겠죠.
다음과 같은 방법으로 하면 되지 않을까 합니다.
explode 함수를 사용하여 문자열을 분할하고, usort 함수를 사용하여 정렬하면 되지 않을까 합니다
<?php
// 예시 데이터
$wr_1_values = array("1|a", "2|b", "3|c");
// '|'를 기준으로 문자열을 분할하고 wr_1[1] 값을 기준으로 정렬
usort($wr_1_values, function($a, $b) {
$a_parts = explode('|', $a);
$b_parts = explode('|', $b);
return strcmp($a_parts[1], $b_parts[1]);
});
// 정렬된 결과 출력
foreach ($wr_1_values as $item) {
echo $item . "\n";
}
?>
Python으로 할 경우 다음과 같이 할 수 있습니다.
# 예시 데이터
wr_1_values = ["1|a", "2|b", "3|c"]
# '|' 기준으로 쪼개고 wr_1[1] 값을 기준으로 정렬
sorted_wr_1 = sorted(wr_1_values, key=lambda x: x.split('|')[1])
# 정렬된 결과 출력
for item in sorted_wr_1:
print(item)
세 분 모두 답변 감사합니다. 주말 잘 보내세요 ~
답변을 작성하시기 전에 로그인 해주세요.