Menu

PHP implode(): 배열을 문자열로 합치기

implode(', ', $array)는 배열의 값을 구분자를 사이에 넣어 하나의 문자열로 합칩니다. 키와 함께 쓰는 implode, 연관 배열, HTML 목록 만들기, implode와 join의 차이를 알아봅니다.

이 페이지에는 실행 가능한 에디터가 있습니다 - 편집하고 실행하면 결과를 바로 볼 수 있습니다.

implode($separator, $array)는 배열의 값을 각 쌍 사이에 $separator를 넣어 하나의 문자열로 합칩니다: implode(', ', ['red', 'green', 'blue'])는 "red, green, blue"를 반환합니다.

구분자는 요소 사이에만 들어가며, 첫 번째 앞이나 마지막 뒤에는 들어가지 않습니다. 문자열을 배열로 나누는 explode()의 반대입니다.

문법

implode(string $separator, array $array): string
implode(array $array): string   // separator defaults to ""

구분자가 먼저 옵니다. 예전 코드는 가끔 배열을 먼저 넘겼습니다(implode($array, ', ')). 이 순서는 PHP 7.4에서 폐지 예정이 되었고 PHP 8.0에서 제거되어, 지금은 TypeError: implode(): Argument #2 ($array) must be of type ?array, string given을 던집니다.

implode와 join

join()은 implode()의 별칭입니다. 같은 인수를 받고 같은 문자열을 반환하므로 하나를 골라 일관되게 쓰세요.

숫자, 불리언, null은 어떻게 되는가

모든 값은 먼저 문자열로 바뀝니다. 숫자는 예상대로 출력되고, true는 "1"이 되며, false와 null은 빈 문자열이 되어 구분자 두 개가 연달아 남습니다.

연관 배열 implode하기

implode()는 키를 무시하고 값만 합칩니다. key=value 쌍을 얻으려면 키와 값에 대해 array_map()으로 각 조각을 만든 다음 합치세요. http_build_query()는 URL 쿼리 문자열에 대해 같은 일을 하며 공백과 특수 문자도 인코딩합니다.

같은 패턴으로 키만 합칠 수도 있습니다: implode(', ', array_keys($user)). 키와 값에 대한 자세한 내용은 연관 배열 페이지에 있습니다.

줄바꿈으로 합치거나 HTML 목록 만들기

구분자는 어떤 문자열이든 될 수 있습니다. "\n"(큰따옴표)은 각 값을 한 줄씩 두므로 텍스트 파일과 명령줄 출력에 편리합니다. HTML 태그를 구분자로 쓰면 implode()가 한 줄로 목록을 만듭니다. 다음 블록을 실행하면 Page 탭에 렌더링된 목록이 보입니다.

합치기 전에 각 값을 htmlspecialchars()로 이스케이프하면 <b> 같은 값이 마크업이 되지 않습니다.

마지막 항목 앞에 "and" 넣어 합치기

사람이 읽는 목록에는 보통 마지막 요소 앞에 "and"가 필요합니다. 마지막 요소를 꺼내고, 나머지를 합친 다음, 다시 붙이세요.

흔한 실수: 중첩 배열

implode()는 한 단계에서만 동작합니다. 그 자체가 배열인 요소는 Array라는 단어로 바뀌고 PHP가 경고를 출력합니다.

<?php
echo implode(', ', ['red', ['orange', 'yellow']]);
Warning: Array to string conversion in /home/index.php on line 2
red, Array

안쪽 배열을 먼저 평평하게 만들거나 각각 따로 합치세요.

자주 묻는 질문

PHP에서 implode()는 무엇을 하나요?

배열의 값을 구분자를 사이에 넣어 하나의 문자열로 합칩니다: implode(', ', ['a', 'b', 'c'])는 "a, b, c"를 반환합니다. explode()의 반대입니다.

implode()와 join()의 차이는 무엇인가요?

없습니다. join()은 implode()의 별칭이며 인수도 결과도 같습니다. 대부분의 코드에서 보게 되는 이름은 implode()입니다.

연관 배열을 키와 함께 implode하려면 어떻게 하나요?

implode()는 값만 씁니다. 키를 포함하려면 먼저 조각을 만드세요: implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($a), $a)). URL 쿼리 문자열이라면 http_build_query($a)가 한 번의 호출로 처리합니다.

PHP 8에서 implode()가 TypeError를 내는 이유는 무엇인가요?

인수가 예전 순서이기 때문입니다. implode($array, ', ')는 PHP 7.4에서 폐지 예정이 되었고 PHP 8.0에서 제거되었습니다. 구분자를 먼저 쓰세요: implode(', ', $array).

PHP에서 배열을 쉼표로 구분한 문자열로 바꾸려면 어떻게 하나요?

implode(',', $array)입니다. 쉼표 뒤에 공백을 넣으려면 구분자로 ', '를 쓰세요. CSV 파일이라면 쉼표가 들어간 값을 따옴표로 감싸 주는 fputcsv()를 쓰세요.

Coddy 프로그래밍 언어 일러스트

Coddy로 코딩 배우기

시작하기