반응형
Web Development · PHP implode
PHP implode —
배열의 모든 원소를 한 문자열로 합치기
["사과","귤","감","밤"] → "사과,귤,감,밤"
시작 오늘 분석할 코드
explode와 정반대로 동작하는 함수. 배열의 원소들 사이에 구분자를 끼워 넣어 한 문자열로 합친다. 원본 코드는 결과를 출력하지 않지만, 변수에 저장된 값은 "사과,귤,감,밤"이다.
<?php $data = array("사과", "귤", "감", "밤"); $result = implode(',', $data); // 배열을 "," 기호로 묶어 일반 문자열로 변환 ?>
$result에 들어 있는 값
사과,귤,감,밤
※ 원본 코드는
print $result;가 빠져 있어 화면 출력이 없다. 변수에 값은 정확히 들어가 있지만 보이지 않을 뿐. 학습 시 print를 추가해서 확인하면 좋다.용어 용어 정리
implode()배열을 구분자로 묶어 문자열로 만드는 함수
join()implode의 별칭 (완전히 동일)
구분자 (glue)원소 사이에 끼워 넣을 문자열
explode와 짝자르기↔합치기 — 서로 반대 동작
$data합칠 원본 배열
$result합쳐진 결과 문자열
array()배열을 만드는 PHP 내장 함수 (또는 [ ])
출력 누락print 없으면 변수만 만들고 끝
1 implode가 필요한 상황
배열에 들어 있는 여러 값을 한 줄짜리 문자열로 만들어야 하는 경우는 매우 흔하다.
예시 시나리오
· 사용자가 선택한 태그들 → DB의 한 컬럼에 콤마로 묶어 저장
· 배열을 URL 쿼리스트링으로 변환 (
· CSV 파일의 한 줄을 만들기
· "사과, 귤, 감, 밤" 같은 사람이 읽기 좋은 목록
· 로그·디버그 메시지에 배열 내용 한 줄로
· 사용자가 선택한 태그들 → DB의 한 컬럼에 콤마로 묶어 저장
· 배열을 URL 쿼리스트링으로 변환 (
a&b&c)· CSV 파일의 한 줄을 만들기
· "사과, 귤, 감, 밤" 같은 사람이 읽기 좋은 목록
· 로그·디버그 메시지에 배열 내용 한 줄로
2 implode 문법
implode(구분자, 배열) // ↑ ↑ // "사이에 넣을 것" 합칠 대상
| 매개변수 | 이 코드 | 의미 |
|---|---|---|
| 구분자 (glue) | ',' |
각 원소 사이에 끼워 넣음 |
| 배열 | $data |
합쳐질 원소들의 배열 |
옛 PHP에서는
implode($array) 또는 implode($array, ',') 두 순서 모두 허용했지만, 두 번째는 PHP 7.4부터 비추천되어 8.0에서 제거됐다. 항상 구분자 먼저.3 동작 방식
$data = ["사과", "귤", "감", "밤"]; implode(',', $data) ↓ "사과" + "," + "귤" + "," + "감" + "," + "밤" ↓ "사과,귤,감,밤"
각 원소 사이에 구분자가 들어가지만, 맨 앞과 맨 뒤에는 구분자가 추가되지 않는다. n개 원소 사이엔 n-1개의 구분자가 들어간다.
반응형
4 단계별 추적
1
$data 생성4원소 배열: ["사과", "귤", "감", "밤"]
2
implode(',', $data) 호출구분자는 콤마, 대상은 $data
3
0번 원소 출력"사과"
4
구분자 추가 + 1번 원소"사과," 다음에 "귤"
5
반복 — 마지막까지"사과,귤,감,밤"
6
$result에 저장변환된 문자열이 변수에 들어감
5 다양한 구분자
$arr = ["사과", "귤", "감"]; implode(',', $arr) // "사과,귤,감" implode(', ', $arr) // "사과, 귤, 감" (공백 포함) implode(' / ', $arr) // "사과 / 귤 / 감" implode("\n", $arr) // 줄바꿈으로 합침 implode('', $arr) // "사과귤감" (구분자 없음) implode($arr) // 빈 구분자와 동일 (PHP 7.3까진 OK, 이후 권장 X)
6 explode ↔ implode — 대칭 관계
explode (자르기)
문자열 → 배열
"폭발(explode)"
"a,b,c" → ["a", "b", "c"]"폭발(explode)"
implode (합치기)
배열 → 문자열
"내파(implode)"
["a", "b", "c"] → "a,b,c""내파(implode)"
$str = "a,b,c"; $arr = explode(',', $str); // ["a", "b", "c"] $str2 = implode(',', $arr); // "a,b,c" (다시 같아짐)
같은 구분자를 쓰면 두 함수는 완전히 역연산이다.
7 빈 배열·null 원소 처리
| 입력 | 결과 |
|---|---|
implode(',', []) |
"" (빈 문자열) |
implode(',', ["a"]) |
"a" (구분자 안 들어감) |
implode(',', ["a", null, "b"]) |
"a,,b" (null은 빈 문자열로) |
implode(',', ["a", false, "b"]) |
"a,,b" (false도 빈 문자열로) |
implode(',', ["a", 0, "b"]) |
"a,0,b" (숫자 0은 그대로) |
8 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
| 매개변수 순서 (배열, 구분자) | PHP 8.0+에선 오류 | 항상 implode(구분자, 배열) |
| print/echo 누락 (이 코드) | 화면에 안 보임 | 결과 확인 시 print $result; |
| 중첩 배열 사용 | "Array" 글자가 들어감 + 경고 | 먼저 평탄화 (array_merge) |
| 객체 직접 implode | 객체→문자열 변환 오류 | 먼저 __toString 정의 또는 추출 |
| 빈 배열에 의존된 코드 | 의도와 다른 빈 문자열 | 먼저 count($arr) 검사 |
9 한 단계 발전 — 키도 포함하기
implode는 값만 합친다. 키와 값을 같이 합치려면 http_build_query나 직접 만든 함수를 쓴다.
$arr = ['name' => 'kim', 'age' => 30]; // http_build_query — URL 쿼리스트링 형식 http_build_query($arr); // "name=kim&age=30" // 직접 만들기 (값 = 키 형식) implode(', ', array_map( fn($k, $v) => "$k=$v", array_keys($arr), array_values($arr) )); // "name=kim, age=30"
10 실용 예 — SELECT 쿼리의 IN 절
$ids = [12, 34, 56, 78]; $placeholders = implode(',', array_fill(0, count($ids), '?')); // "?,?,?,?" $sql = "SELECT * FROM users WHERE id IN ($placeholders)"; $stmt = $pdo->prepare($sql); $stmt->execute($ids);
가변 개수 매개변수의 prepared statement를 만들 때 implode가 표준적으로 쓰인다.
핵심 한 줄 요약
implode()배열 원소들을 구분자로 합쳐 문자열로 변환
매개변수 순서implode(구분자, 배열) — PHP 8.0+ 강제
결과"사과,귤,감,밤" — 양 끝엔 구분자 없음
join()동일 함수의 별칭
explode와 짝자르기↔합치기 — 같은 구분자로 역연산
출력하려면implode 후 print/echo 직접 호출
실무 활용CSV 만들기, IN 절 쿼리, URL 쿼리스트링
반응형
'php' 카테고리의 다른 글
| PHP sort — 배열 오름차순 정렬 완전 정리 (0) | 2026.06.14 |
|---|---|
| PHP nl2br — 줄바꿈을 <br>태그로 완전 정리 (0) | 2026.06.14 |
| PHP explode — 문자열을 구분자로 잘라 배열로 변환 완전 정리 (0) | 2026.06.14 |
| PHP addslashes — 따옴표 이스케이프 완전 정리 (0) | 2026.06.14 |
| PHP static 변수 — 호출 사이에 값을 기억시키는 누적 카운터 완전 정리 (0) | 2026.06.14 |
왕진 블로그

댓글