wr_1 여분필드에 "|" 기준으로 값을 받은 경우 리스트정렬

wr_1 여분필드에 "|" 기준으로 값을 받은 경우 리스트정렬

QA

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)
답변을 작성하시기 전에 로그인 해주세요.
전체 4

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT