집합처리는 데이타 처리시 빈번히 알고리즘 중에 하나입니다.
QnA에 답변한 내용이 아까워서 공유합니다.
만약 $a = "1,2,3"이있고
$b = "2,3,4" 가 있다면
2와 3을 제거하고 1,4만 남게 하려면 어떻게 해야할까요?
배열 $a, $b 의 여집합을 구하는 문제입니다.
php함수중에
array_diff 는 차집합
array_intersect 는 교집합 입니다.
php에 여집합 함수는 없습니다. 집합 연산을 통해서 구할수 있습니다.
A, B의 여집합은 (A - B) + (B - A) 입니다.(아마도 맞을겁니다.)
[code]
$arr_a = explode(",", $a);
$arr_b = explode(",", $c);
//여집합
$arr_c = array_merge(
array_diff($arr_a, $arr_b), // 1
array_diff($arr_b, $arr_a) //4
);
// $arr_c = 1 4
echo implode(",", $arr_c);
//result = 1,4
//교집합은
$arr_d = array_intersect($arr_a, $arr_b); //2, 3
//합집합은
$arr_e = array_merge(
array_intersect($arr_a, $arr_b), //2, 3
array_diff($arr_a, $arr_b), // 1
array_diff($arr_b, $arr_a) //4
); //2, 3, 1, 4
[/code]
댓글 5개
게시글 목록
| 번호 | 제목 |
|---|---|
| 16619 | |
| 16618 | |
| 16612 | |
| 16603 | |
| 16598 | |
| 16589 | |
| 16578 | |
| 16571 | |
| 16563 | |
| 16554 | |
| 16546 | |
| 16534 | |
| 16527 | |
| 16520 | |
| 16513 | |
| 16510 | |
| 16505 | |
| 16498 | |
| 16490 | |
| 16486 | |
| 16482 | |
| 16465 | |
| 16458 | |
| 16456 | |
| 16448 | |
| 16447 |
PHP
한글 초,중,종성 분리하기
3
|
| 16440 | |
| 16439 |
웹서버
nginx 설치시 보안
3
|
| 16438 | |
| 16430 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기