본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP implode — 배열을 구분자로 합쳐 문자열로 변환 완전 정리

by 왕진 2026. 6. 14.
반응형

 

 

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 쿼리스트링으로 변환 (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 (자르기)
문자열 → 배열
"a,b,c" → ["a", "b", "c"]
"폭발(explode)"
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 쿼리스트링
반응형

댓글