채택완료

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개 / 댓글 4개

채택된 답변
+20 포인트

$wr_1_arr=explode("|",$wr_1);

하시면 됩니다.

답변에 대한 댓글 2개

쪼개서 쓰는 건 아는데, $wr_1_arr[1] 기준으로 게시글을 리스트 정렬시켜보고 싶어서요.

세 분 모두 답변 감사합니다. 주말 잘 보내세요 ~

2023-10-27 (금) 15:34:37

wr_1을 | 기준으로 쪼개서 wr_1[1]이 정렬 기준이면

둘째 값인데

substring_index()함수를 쓰면 가능하겠지만

실용적이지는 않겠죠.

답변에 대한 댓글 1개

조언 감사합니다.
ps. 답변 채택 안 한 상태였다면, 이 답변을 채택.
2023-10-27 (금) 13:59:44

다음과 같은 방법으로 하면 되지 않을까 합니다.

explode 함수를 사용하여 문자열을 분할하고, usort 함수를 사용하여 정렬하면 되지 않을까 합니다

Copy
<?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으로 할 경우 다음과 같이 할 수 있습니다.

Copy
# 예시 데이터
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)

정렬을 하실려면 wr_1을 분리해서 wr_1 | wr_2 이런식으로 나눠서 저장을 하시는게 편하실껍니다.

자리수가 정해져 있다면 잘라서라도 하겠지만 임의에 데이터를 분리해서 정렬할때는 효용성이 떨어질듯 합니다.

답변에 대한 댓글 1개

걍, 궁금해서요..^^;

답변을 작성하려면 로그인이 필요합니다.