관리 메뉴

웹개발자의 기지개

[PHP] 유용한 실무팁 11 - 문자열 요소 병합 (중복은 하나만), 새로 추가된 문자열로 업데이트 (기존 요소가 없으면 바로 삭제) 본문

PHP

[PHP] 유용한 실무팁 11 - 문자열 요소 병합 (중복은 하나만), 새로 추가된 문자열로 업데이트 (기존 요소가 없으면 바로 삭제)

웹개발자 워니 2025. 6. 24. 21:44

실무에서 다소 자주 쓰이는 문자열 요소값에 대하여 다음의 2가지 사항에 대하여 함수화 하여 만들어 봤다.

 

특히 SQL 상의 키값 숫자 요소들로 여러개를 한곳으로 묶어서 

220,45,2,14 이런식으로 문자열형식으로 DB 에 저장해서 이를 바탕으로 조회하고 업데이트 하는 백엔드작업이 실무에서 다양하게 자주 쓰인다.

 

이때 다음의 소스가 유용할 것이다.

 

1.  문자열 요소 병합하기 (중복되는 요소값은 하나만 나오게)

 

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
<?
function merge_unique_keys($originalStr$newKeysStr) {
    // 문자열을 배열로 변환
    $originalArr = explode(','$originalStr);
    $newKeysArr = explode(','$newKeysStr);
 
    // 배열 병합
    $mergedArr = array_merge($originalArr$newKeysArr);
 
    // 중복 제거
    $uniqueArr = array_unique($mergedArr);
 
    // 정수형으로 정렬하고 문자열로 변환
    $uniqueArr = array_map('trim'$uniqueArr); // 공백 제거
    sort($uniqueArr, SORT_NUMERIC); // 숫자 정렬
 
    // 다시 문자열로 변환
    return implode(','$uniqueArr);
}
 
// 예제 사용
$str = "20,45,2";
$str = merge_unique_keys($str"2,11,45,20");
echo $str// 결과: 2,11,20,45
?>
cs

 

 

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
<?
function merge_unique_keys($originalStr$newKeysStr) {
    // 문자열을 배열로 변환하고 공백 제거
    $originalArr = array_map('trim'explode(','$originalStr));
    $newKeysArr = array_map('trim'explode(','$newKeysStr));
 
    // 빈 문자열 제거
    $originalArr = array_filter($originalArr'strlen');
    $newKeysArr = array_filter($newKeysArr'strlen');
 
    // 배열 병합 및 중복 제거
    $mergedArr = array_unique(array_merge($originalArr$newKeysArr));
 
    // 숫자 정렬
    sort($mergedArr, SORT_NUMERIC);
 
    // 문자열로 변환
    return implode(','$mergedArr);
}
 
// 예제
$str = "363,361";
$str = merge_unique_keys($str"360");
echo $str;  // 결과: 360,361,363
?>
cs

 

 

 

2. 새로운 문자열 요소값으로 업데이트 할때, 새로운 값은 추가하고 기존에 있던 요소가 없으면 그값만 삭제되도록

 

 

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
<?
function update_keys($originalStr$newKeysStr) {
    // 문자열 → 배열
    $originalArr = explode(','$originalStr);
    $newKeysArr = explode(','$newKeysStr);
 
    // 공백 제거
    $originalArr = array_map('trim'$originalArr);
    $newKeysArr = array_map('trim'$newKeysArr);
 
    // 숫자 형태로 정렬
    sort($newKeysArr, SORT_NUMERIC);
 
    // 중복 제거
    $uniqueArr = array_unique($newKeysArr);
 
    // 새로운 키 중 기존 키에 존재했던 것만 유지할 필요 없다면 아래 줄 생략 가능
    // 하지만 요청하신대로는 기존 키에 없으면 제거하므로 위 줄 그대로 사용
 
    // 최종 결과를 문자열로 반환
    return implode(','$uniqueArr);
}
 
// 예제
$str = "20,45,2";
$str = update_keys($str"11,45,20,1"); 
// "11","1" 이 새로 들어오고 기존에 없던 값이면 포함됨, 그런데, 기존에 "2"는 새로 들어온 "2"가 없으므로 삭제
 
echo $str// 결과: 1,11,20,45
?>
cs

 

 

 

 

Comments